1. 程式人生 > >java枚舉類 (近期讀書筆記整理,復習所用,存個檔

java枚舉類 (近期讀書筆記整理,復習所用,存個檔

對象 季節 sum 枚舉 java枚舉類 因此 bubuko 遍歷 win

某些情況下,一個類的對象是有限而固定的。

如地球上的季節,有春夏秋冬四季,即四個對象

這種實例有限且固定的類,被稱為枚舉類

早期,通過定義類的方式,直接使用簡單的靜態變量來表示枚舉。

如public static final int Season_spring=1; 註:左邊的內容改下名字和X4

但這種方式存在諸多不便和缺陷。(如類型安全和容易混淆,後來,它進化了……

變身:

java5中新增了一個關鍵字,enum(與class,interface的地位相同)

它是一個特殊的類,可以擁有自己的成員變量,方法,可以實現一個或多個接口,也可以定義自己的構造器。

對比一下:

public enum Season{

Spring,Summer,Fall,Winter;

}

是不是很簡潔呢?

但它不是普通類,它和普通類存在區別:

1枚舉類可以實現一個和多個接口,使用enum定義的枚舉類默認繼承了java.lang.Enum類,而不是繼承Object類,因此枚舉類不能顯式繼承其他父類,其中java.lang.Enum類實現了java.lang.Serializable和java.lang.Comparable兩個接口。

2使用Enum定義、非抽象的枚舉類會默認使用final修飾,因此枚舉類不能派生子類。

3枚舉類的構造器只能使用private訪問控制符

4枚舉類所有實例必須在顯式在第一行列出,否則永遠不能產生實例。

舉類默認 提供了一個values()方法,該方法可以很方便的遍歷出所有枚舉值。

java.lang.Enum類中所提供的方法

技術分享圖片

public enum Gender

{

MALE,FEMALE;

//定義一個public修飾的實例變量

public String name;

}

public class GenderTest

{

main方法(此處)

//通過Enum的valueof()方法來獲取enum類的枚舉值

Gender g=Enum.valueof(Gender.class,"FEMALE");

g.name="女";

//直接訪問枚舉值的name實例變量

system.out.println("g"+"代表:"+g.name);

}

}

可以進行一些改進,把String name設成私有屬性,然後添加一個方法,在裏面利用Switch控制實現一個公有的setName方法,避免造成混淆。

暫時就到這裏了,每天進步一點點。學習up

java枚舉類 (近期讀書筆記整理,復習所用,存個檔