いくつかの用途のJava列挙型クラス

いくつかの用途のJava列挙型クラス

まず、列挙定数

JDK1.5前に、定数の定義のための文言ます。public staticのfianl .... JDK1.5後、種類が挙げ、列挙型に関連する定数にグループ分けすることができ、列挙メソッドを定数より提供。
列挙型の定義とクラス定義ここでは、非常に似ている列挙型の単純な定義であります:

 enum Myenum{  
   BIG,MEDIUM,SMAll  
 }

列挙型キーワードがどのライフ列挙クラスで使用され、BIG、MEDIUM、SMALLが列挙です。

二、スイッチケース

JDK1.6のswitch文だけint型、char型、列挙型、列挙型をサポートする前に、私たちのコードを読みやすくします。


public class TestEnum {
//声明枚举类(此处为内部类,可以直接拿到外部)
	enum Myenum{  
 	  BIG,MEDIUM,SMAll  
 	}
//主方法中使用枚举变量
	public static void main(){
		Myenum m = Myenum.MEDIUM;
		switch(m){
			case BIG:
				System.out.println("大大大");
			case MEDIUM:
				System.out.println("中中中");
			case SMAll:
				System.out.println("小小小");
		}
	}
 }

変数mの値が列挙媒体の変数であるため、MEDIUMはcase文に相当します。
コンソール出力は次のようになります。途中で

第三に、列挙クラスのコンストラクタ

列挙クラスのコンストラクタは、外部からインスタンス化を防止するためにプライベートでなければなりません(他の場所で書くことではない、である:Myenum A =新Myenum(「 」);)。列挙列挙定数クラス(例えば、BIG、MEDIUM)列挙クラスインスタンス事実は、列挙定数パラメータタイプが同じパラメータ型コンストラクタを持たなければなりません。
  以下は、列挙クラスのコンストラクタの例です。

public enum Myenum {
		// 与其他类型的实例一样,枚举实例的参数应与构造器的参数一致
		BIG("大大大"), MEDIUM(20), SMALL("太小了", 10);
		private String str;
		private int i;
		// 枚举的构造器要私有,防止被修改,下面是三种构造器
		private Myenum(String str) {
			this.str = str;
		}
		private Myenum(int i) {
			this.i = i;
		}
		private Myenum(String str, int i) {
			this.str = str;
			this.i = i;
		}
}
//我们在这个类中对枚举进行测试
public class TestEnum {
	public static void main(String[] args) {
		Myenum m = Myenum.SMALL;
		System.out.println("Myenum 中的枚举常量SMALL中str:"+m.str+",i:"+m.i);
	}
}

出力結果:
SMALL str内にMyEnum列挙定数:短すぎ、I:10

第四に、カスタム・メソッドの列挙

そして、同じ他の3つの場所で、STRと私のための唯一のより多くのゲッターは、setterメソッドです。試験方法は、列挙型のプライベート変数で撮影しました。

 public enum Myenum {
		// 与其他类型的实例一样,枚举实例的参数应与构造器的参数一致
		BIG("大大大"), MEDIUM(20), SMALL("太小了", 10);
		private String str;
		private int i;
		// 枚举的构造器要私有,防止被修改,下面是三种构造器
		private Myenum(String str) {
			this.str = str;
		}
		private Myenum(int i) {
			this.i = i;
		}
		private Myenum(String str, int i) {
			this.str = str;
			this.i = i;
		}
		//getter,setter方法
		public String getStr() {
	 		return str;
		}
		public void setStr(String str) {
			this.str = str;
		}
		public int getI() {
			return i;
		}
		public void setI(int i) {
			this.i = i;
		}
}
//我们在这个类中对枚举进行测试
public class TestEnum {
	public static void main(String[] args) {
		Myenum m = Myenum.SMALL;
		System.out.println("Myenum 中的枚举常量SMALL中str:"+m.getStr()+",i:"+m.getI());
	}
}

第五には、クラスを継承することはできません、あなたがインターフェイスを実装することができます

列挙クラスのすべてがjava.lang.Enumから継承します。Javaは多重継承をサポートしていないので、その列挙オブジェクトが他のクラスから継承することはできません。しかし、インタフェースを実現することができます。実装と一般的なカテゴリので、そこのように実現されませんでした。

第六に、インタフェースの列挙を使用して、組織

前に何の列挙定数は、通常、管理するためのインタフェースに置かれていません。さて、インタフェースへの列挙は、より簡単に管理することができます。

public interface Animal{  
    enum Dog implements Animal{  
        BIG_DOG,MEDIUM_DOG,SMALL_DOG 
    }  
    enum Cat implements Animal{  
         BIG_CAT,MEDIUM_CAT,SMALL_CAT 
    }  
} 

他の七

1.コレクション

二つの列挙:java.util.EnumSetとjava.util.EnumMap。要素のコレクションを繰り返さない確保EnumSetの、EnumMap列挙型キーであるが、値の任意のタイプであってもよいです。詳細は、JDKのドキュメントを参照してくださいすることができます。

2.比較します

オブジェクトの列挙型の値の比較は、等価の値を比較するために直接==使用されてもよいです。もちろん、この方法はまた、equalsを使って比較することができます。

リリース5元の記事 ウォンの賞賛1 ビュー194

おすすめ

転載: blog.csdn.net/weixin_43584835/article/details/104051443