枚舉 Enumeration

定義與作用:
枚舉就是要讓某個類型的變量的聚會只能爲若干個固定值中的一個,否則,編譯器就會報錯。枚舉可以讓編譯器在編譯時就可以控制源程序中填寫的非法值,精通變量的方式在開發階段無法實現這一目標。


枚舉就相當一個類,其中也可以定義構造方法。成員變量、普通方法和抽象方法。

枚舉元素必須位於枚舉體中的最開始部分,枚舉元素列表的後面要有分號與其他成員分隔。把枚舉中的成員方法或變量等放在枚舉元素的前面,編譯器報告錯誤。

帶構造方法的枚舉:

  1.構造方法必須定義成私有的。

  2.如果有多個構造方法,該如何選擇哪個構造方法?

  3.枚舉元素MON和MON()的效果一樣,都是調用默認的構造方法。

帶方法的枚舉

   1.定義枚舉TrafficLamp

   2.實現普通的next方法。

   3.實現抽象的next方法:每個元素分別是由枚舉類的子類來生成的實例對象,這些子類採用類似內部類的方式進行定義。

   4.增加止表示時間的構造方法。

枚舉只有一個成員時,就可以作爲一種單例的實現方式。

import java.net.StandardSocketOptions;
import java.util.Date;


import javax.swing.plaf.synth.SynthOptionPaneUI;


//枚舉是一種類型,用於定義變量,以限制變量的賦值;賦值時通過“枚舉名.值”取得枚舉中的值
public class EnumTest {
public static void main(String[] args){
// WeekDay1 weekDay = WeekDay1.MON;
// System.out.println(weekDay1.nextDay());

WeekDay weekDay2 = WeekDay.FRI;
System.out.println(weekDay2);
System.out.println(weekDay2.name());
System.out.println(weekDay2.ordinal());
System.out.println(weekDay2.valueOf("SUN").toString());
System.out.println(WeekDay.values().length);

new Date(300){};
}


public enum WeekDay{
SUN(1),MON(),TUE,WED,THI,FRI,SAT;   //注:枚舉寫在最前面,否則編譯出錯而且如果下面還有代碼的話,枚舉後面就加";"
private WeekDay(){
System.out.println("first");
}
private WeekDay(int day){
System.out.println("second");
}
}
public enum TrafficLamp{
RED(30){
public TrafficLamp nextLamp(){
return GREEN;
}
},
GREEN(45){
public TrafficLamp nextLamp(){
return YELLOW;
}
},
YELLOW(5){
public TrafficLamp nextLamp(){
return RED;
}
};
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time){this.time = time;}////構造器默認也只能是private, 從而保證構造函數只能在內部使用
}
}

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