---------------------- <a href="http://www.itheima.com" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="blank">ASP.Net+Unity開發</a>、<a href="http://www.itheima.com" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="blank">.Net教育訓練</a>、期待與您交流! ----------------------
一、定義
一個類的對象是可一一列舉出來的,這個類可以定義為枚舉類。
二、特征
1.每一個枚舉值都是一個對象,即枚舉類型的執行個體是常量。
2.Java要求必須先定義enum執行個體,否則編譯器會報錯。其他定義的成員必須放到枚舉變量清單後。
3.一旦enum類的定義結束,編譯器就不允許我們再使用其構造器來建立任何執行個體了,是以一般情況下枚舉類中的構造器的限定修飾符為private。
4.所有的enum類都繼承自java.lang.Enum類,是以enum類不能繼承及其他的類,因為Java不能實作多重繼承。
三、常用API
ordinal(),用來表示某個特定enum常量的聲明順序。
values(),用來按照enum常量的聲明順序,産生由這些常量值構成的數組。
四、執行個體
1.帶構造方法的枚舉類舉例
/**
*
* 帶構造方法枚舉類
* 類定義說明:一個星期有7天,是以有7個值,
*/
public enum WeekDay{
SUN(0),MON,TUE,WED,THI,FRI,SAT;//枚舉類型執行個體
/*
* 一旦enum類的定義結束,編譯器就不允許我們再使用其構造器來建立任何實
* 例了,是以一般情況下枚舉類中的構造器的限定修飾符為private。
*/
private WeekDay(){
System.out.println("first");
}
private WeekDay(int day){
System.out.println("second");
}
}
2.帶抽象方法和匿名内部類的枚舉類舉例
/**
* 帶抽象方法和匿名内部類的枚舉類舉例
* 交通燈例子,有3個執行個體,紅、黃、綠
*/
public enum TrafficLamp{
RED(30){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return GREEN;
}
},
GREEN(45){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return YELLOW;
}
},
YELLOW(5){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return RED;
}
};
public abstract TrafficLamp nextLamp();//抽象方法
private int time;//交通燈亮的時長。
private TrafficLamp(int time){
this.time=time;
}
public int getTime(){
return time;
}
}
執行個體運作:
/**
* 執行個體測試類
*/
public class EnumTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
WeekDay weekDay =WeekDay.SUN;
System.out.println(weekDay);
System.out.println(weekDay.name());
System.out.println(weekDay.ordinal());
System.out.println(weekDay.valueOf("SUN"));//
System.out.println(WeekDay.values().length);//按照定義順序組裝成數組。
System.out.println("-----------------------------");
TrafficLamp lamp=TrafficLamp.RED;
System.out.println(lamp);
System.out.println(lamp.name());
System.out.println(lamp.ordinal());
System.out.println(lamp.valueOf("RED"));//
System.out.println(lamp.values().length);//按照定義順序組裝成數組。
System.out.println(lamp.getTime());
}
}
---------------------- <a href="http://www.itheima.com" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="blank">ASP.Net+Unity開發</a>、<a href="http://www.itheima.com" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="blank">.Net教育訓練</a>、期待與您交流! ----------------------
詳細請檢視:<a href="http://www.itheima.com" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="blank">www.itheima.com</a>