JAVA枚舉類

一、方式一(無參數)

public enum Week {
	MON,TUE,WED;
}

相當於

public class Week {
	
	public static final Week MON = new Week();
	public static final Week TUE = new Week();
	public static final Week WED = new Week();
	
	private Week(){}						//私有構造,不讓其他類創建本類對象
}
public static void demo1() {
   Week mon = Week.MON;
   System.out.println(mon);
}

二、方式二(有參數)

public enum Week2 {
	MON("星期一"),TUE("星期二"),WED("星期三");
	
	private String name;
	private Week2(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	
	public String toString() {
		return name;
	}
}

相當於

public class Week2 {
	
	public static final Week2 MON = new Week2("星期一");
	public static final Week2 TUE = new Week2("星期二");
	public static final Week2 WED = new Week2("星期三");
	
	private String name;
	private Week2(String name){
		this.name = name;
	}						//私有構造,不讓其他類創建本類對象
	public String getName() {
		return name;
	}

}
public static void demo2() {
   Week2 mon = Week2.MON;
   System.out.println(mon.getName());
}

三、方式三(有抽象方法)

public enum Week3 {
	MON("星期一"){
		public void show() {
			System.out.println("星期一");
		}
	},TUE("星期二"){
		public void show() {
			System.out.println("星期二");
		}
	},WED("星期三"){
		public void show() {
			System.out.println("星期三");
		}
	};
	
	private String name;
	private Week3(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	
	public abstract void show();
	
}

相當於

public abstract class Week3 {
	
	public static final Week3 MON = new Week3("星期一") {
		public void show() {
			System.out.println("星期一");
		}
	};
	public static final Week3 TUE = new Week3("星期二"){
		public void show() {
			System.out.println("星期二");
		}
	};
	public static final Week3 WED = new Week3("星期三"){
		public void show() {
			System.out.println("星期三");
		}
	};
	
	private String name;
	private Week3(String name){
		this.name = name;
	}						//私有構造,不讓其他類創建本類對象
	public String getName() {
		return name;
	}
	
	public abstract void show();
}
public static void demo3() {
   Week3 mon = Week3.MON;
   mon.show();
}
public static void main(String[] args) {
   Week3 mon = Week3.TUE;
   switch (mon) {
   case MON:
      System.out.println("星期一");
      break;
   case TUE:
      System.out.println("星期二");
      break;
   }
}

四、使用方法

 int ordinal()
          返回枚舉常量的序數(它在枚舉聲明中的位置,其中初始常量序數爲零)。
 int compareTo(E o)
          比較此枚舉與指定對象的順序。
 String name()
          返回此枚舉常量的名稱,在其枚舉聲明中對其進行聲明。
 String toString()
          返回枚舉常量的名稱,它包含在聲明中。
static<T extends Enum<T>>T valueOf(Class<T> enumType, String name)
          返回帶指定名稱的指定枚舉類型的枚舉常量。

values() 此方法雖然在JDK文檔中查找不到,但每個枚舉類都具有該方法,它遍歷枚舉類的所有枚舉值非常方便

public static void demo1() {
   Week2 mon = Week2.MON;
   Week2 tue = Week2.TUE;
   Week2 wed = Week2.WED;
   
   System.out.println(mon.ordinal());            //枚舉項都是有編號的
   System.out.println(tue.ordinal());
   System.out.println(wed.ordinal());
   
   System.out.println(mon.compareTo(tue));          //比較的是編號
   System.out.println(mon.compareTo(wed));
   
   System.out.println(mon.name());             //獲取實例名稱
   System.out.println(mon.toString());          //調用重寫之後的toString方法

   Week2[] arr = Week2.values();
   for (Week2 week2 : arr) {
      System.out.println(week2);
   }

}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章