文章目錄
- 1. 什么是枚舉
- 2. 定義
- 3. 使用
- 1)常量
- 2)遍歷
- 3)switch
- 4. 屬性和方法
- 1)屬性
- 2)方法
- 5. 實現原理
- 6. 使用場景
- 總結
1. 什么是枚舉
枚舉是列出某些有窮序列集的所有成員的程序,或者是一種特定類型對象的計數。
在 Java中,枚舉是一種特殊的數據類型,用于表示一組具名的常量。
枚舉類型可以包含零個或多個枚舉常量,每個常量都是該枚舉類型的一個實例。使用枚舉可以使代碼更加清晰、可讀,并避免使用整數或字符串常量進行硬編碼。
源碼:
從 Enum
的定義,我們可以看到它實現了 Comparable
和 Serializable
兩個接口,說明了枚舉類型可以使用比較器或者序列化操作。
2. 定義
枚舉類型是通過 enum
關鍵字來定義的
示例代碼:
public enum Day {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
在這個例子中,我們定義了一個名為 Day
的枚舉類型,包含了一周的所有天。每個枚舉常量都是 Day
類型的一個實例,代表一個特定的天。
3. 使用
1)常量
枚舉常量可以直接用于程序中
Day today = Day.SATURDAY;
if (today == Day.SATURDAY || today == Day.SUNDAY) {System.out.println("放假啦!!!");
} else {System.out.println("搬磚中。。。");
}
2)遍歷
通過 values()
方法獲取枚舉類型的所有常量進行遍歷
示例代碼:
public class Demo {public static void main(String[] args) {for (Day day : Day.values()) {System.out.println(day);}}
}
enum Day {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
輸出結果:
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
SUNDAY
3)switch
枚舉經常與 switch
語句結合使用,使得代碼更加清晰
示例代碼:
public class Demo {public static void main(String[] args) {Day today = Day.SATURDAY;switch (today) {case MONDAY:case TUESDAY:case WEDNESDAY:case THURSDAY:case FRIDAY:System.out.println("搬磚中。。。");break;case SATURDAY:case SUNDAY:System.out.println("放假啦。。。");break;default:System.out.println("錯誤的星期");break;}}
}
enum Day {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
輸出結果:
放假啦。。。
4. 屬性和方法
1)屬性
枚舉可以包含屬性,每個枚舉常量可以擁有自己的屬性
示例代碼:
enum Day {MONDAY("Mon"),TUESDAY("Tue"),WEDNESDAY("Wed"),THURSDAY("Thu"),FRIDAY("Fri"),SATURDAY("Sat"),SUNDAY("Sun");// 自定義屬性private final String subName;Day(String subName) {this.subName = subName;}public String getSubName() {return subName;}
}
每個枚舉常量都有一個名為 subName
的屬性,代表了星期的簡寫
2)方法
枚舉可以定義方法,使得每個枚舉常量可以具有自己的行為
示例代碼:
enum Day {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;// 自定義方法public boolean isWeekend() {return this == SATURDAY || this == SUNDAY;}
}
在這個例子中,我們為枚舉定義了一個方法 isWeekend()
,用于判斷當前枚舉常量是否表示周末
5. 實現原理
枚舉類型本質上是一種特殊的類
編譯器會在創建枚舉時自動添加一些特殊的方法,例如 values()
方法用于獲取所有枚舉常量
6. 使用場景
-
用枚舉替代整數常量和字符串常量
當程序需要一組常量時,使用枚舉可以使得代碼更加清晰和可讀,避免了硬編碼的問題
-
使用枚舉常量的方法提高可讀性
在定義枚舉時,考慮為每個常量添加一些相關的方法,提高代碼的可讀性和可維護性
-
使用枚舉實現單例模式
枚舉天生具備線程安全性和單例特性,可以作為實現單例模式的一種方式
總結
枚舉是一種強大的工具,用于表示一組具名的常量。通過枚舉,我們可以更清晰地表達代碼中的常量集合,并通過相關的屬性和方法使得代碼更加可讀、可維護。使用枚舉的最佳實踐包括替代整數常量和字符串常量、為枚舉常量添加有意義的方法、以及利用枚舉實現單例模式等。