@
目錄
一、列舉類簡介
- 類的物件確定且有限,就成為列舉類。
- 當需要定義一組常量時,使用列舉類。
- 如果列舉類只有一個物件,則可以作為單例模式的實現方式。
二、自定義列舉類
1、方式一:jdk5.0之前,自定義列舉類
-
程式碼實現
class Season{ //1.屬性要定義為 private final的 private final String seasonName; private final String seasonDesc; //2.構造器私有化(因為屬性是final的,所以要在構造器中初始化) private Season(String seasonName, String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; } //3. 提供當前列舉類的幾個物件,並宣告為public static final public static final Season SPRING = new Season("春天","我是春天"); public static final Season SUMMER = new Season("夏天","我是夏天"); public static final Season AUTUMN = new Season("秋天","我是秋天"); public static final Season WINTER = new Season("冬天","我是冬天"); }
2、方式二:jdk5.0,用enum關鍵字定義列舉類
-
程式碼實現
enum Season1{ //1.提供列舉類的物件 SPRING("春天","我是春天"), SUMMER("夏天","我是夏天"), AUTUMN("秋天","我是秋天"), WINTER("冬天","我是冬天"); //2.定義屬性,宣告為private final private final String seasonName; private final String seasonDesc; //3.私有化構造器,並給物件賦值 private Season1(String seasonName, String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; } //4.額外需求:get()方法 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } }
-
說明
- 列舉類的物件在第一行宣告,用逗號分隔,分號結尾。不用自己加
public static final
,因為系統會自動新增。也不用加new + 構造器
來建立。 - enum定義的列舉類預設繼承
java.lang.Enum類
,因此不能再繼承其他類。可以通過
- 列舉類的物件在第一行宣告,用逗號分隔,分號結尾。不用自己加
三、Enum類的主要方法
1、toString()
- 返回當前列舉類物件的名字。
- 預設輸出物件和呼叫toString是一樣效果
2、values()
- 靜態方法
- 返回列舉型別的物件陣列,可以方便的遍歷所有列舉值。
3、valueOf(String str)
- 靜態方法
- 把一個字串轉換為對應的列舉類物件。
- 名字必須一致,否則會出異常:
IllegalArgumentException: No enum constant com.lzx.java.Season1.spring
四、使用enum關鍵字定義的列舉類去實現介面
1、情況一
- 實現介面,在enum類中實現抽象方法即可
2、情況二:
- 每個物件分別去實現抽象方法,則不同的物件呼叫各自實現的抽象方法。