Enumeration列挙タイプ

2476 ワード

一部のプログラムの実行時に必要なデータは任意ではなく、一定の範囲内の値でなければなりません.
1つの列挙には、構造関数、フィールド、およびメソッドもあります.
1.列挙クラスは特殊な形式のjavaクラスと見なすこともできる
2.列挙で宣言された各列挙値は、列挙クラスのインスタンス・オブジェクトを表します.
3.Javaの一般クラスと同様に、列挙クラスを宣言する際に、属性、構造関数、メソッドを宣言することもできますが、列挙クラスの構築方法はプライベートである必要があります.
4.列挙クラスはインタフェースを継承したり、抽象クラスを継承したりすることもできます.
5.列挙クラスに列挙値が1つしかない場合は、単一状態設計モードとして使用できます.
列挙の定義形式:
Enumタイプ名{
          A,B,C;
           }
eg: enum Grade{
A("100-90"),B("89-80"),C("79-70");
.............
.............
}
上の例ではGradeは列挙タイプの名前(クラスを定義したクラス名に相当)であり、A,B,Cは列挙タイプの値(オブジェクトに相当)である
 
列挙例1:スコアレベルの列挙タイプを定義し、タイプの値に基づいてスコアレベルの範囲を印刷します.
package cn.enumer;

import org.junit.Test;

public class Enumera {
	enum Grade {
		A("100-90"),B("89-80"),C("79-70"),D("69-60");
		//         
		private String value;
		//         
		private Grade(String value){ 
			this.value=value;
		}
		//       
		public String getValue(){
			return value;
		}

	}
	@Test
	public void test(){
		print(Grade.C);
	}
	private void print(Grade g){
		String value=g.getValue();
		System.out.println(value);
	}

}

 
列挙例2:抽象的な方法の列挙タイプを持ち、印刷成績の評価を実現する
package cn.enumer;

import org.junit.Test;

public class abstractEnum {
	enum Grade {
		A("100-90"){
			public  String getLacal(){
				return " ";
			}
		},B("89-80"){
			public String getLacal(){
				return " ";
			}
			
		},C("79-70"){
            public String getLacal(){
            	return "  ";
			}
			
		},D("69-60"){
            public String getLacal(){
            	return " ";
			}
			
		};
		private String value;
		private Grade(String value){
			this.value=value;
		}
		public String getValue(){
			return value;
		}
		public abstract String getLacal();
	}
	@Test
	public void Test2(){
		print(Grade.A);
	}
	private void print(Grade g){
		String value=g.getLacal();
		//String value1=g.getValue();
		System.out.println(value);
	}
	

}