二、Java面向對象(18)_枚舉
2018-05-12
枚舉
一、枚舉的定義以及底層分析特點
JDK1.5引入了新的數據類型——枚舉,是一個特殊的類。就是固定的多個對象的集合。
定義格式:
[修飾符] enum 枚舉類名{
常量A,常量B,常量C;
}
我們自定義的枚舉類型,在編譯(底層)都是直接繼承於java.liang.Enum類,Enum是所有枚舉的父類。
枚舉類的特點:
1、枚舉的直接父類java.liang.Enum,但不能顯示繼承Enum。
2、枚舉就相當於一個類,可以定義構造方法、成員變量、普通方法和抽象方法。
3、默認私有的構造方法。
4、每個實例分別用全局常量表示,枚舉類的對象是固定的,實例個數有限,不能使用new來創建。
5、枚舉實例必須位於枚舉體中最開始的部分,枚舉實例列表後要有分號和其他成員變量相分隔。
6、枚舉實例後有花括號時,該實例是匿名內部類的對象(查看編譯後的class文件)。
----------------------------------------------------------------------------------------------------------------------
二、枚舉的使用
1、枚舉中都是全局靜態常量,所以可以使用枚舉類名調用。
Weekday day = Weekday.MONDAY;
2、因為java.liang.Enum類是所有枚舉類的父類,所以所有的枚舉對象可以調用Enum類中的方法。
String name = 枚舉對象.name();//返回枚舉對象的常量名稱
int ordinal = 枚舉對象.ordinal();//返回枚舉對象的序號,從0開始
3、編譯器生成的枚舉類的靜態方法
枚舉類型[ ] values();
Weekday[] ws = Weekday.values();//返回當前枚舉類型的所有常量,使用一個數組封裝起來。
4、switch也支持操作枚舉類型
JDK1.6之前的switch語句只支持int,char,enum類型,支持枚舉是因為底層使用的是枚舉對象的ordinal,而ordinal的類型是int類型
5、枚舉的單例設計模式
參考:http://softbeta.iteye.com/blog/1185573
二、Java面向對象(18)_枚舉