首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java Enum 完整用法指南:從基礎到進階實例

     編輯:Java 綜合教學

枚舉定義與常用方法

public enum MyEnum {
    Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday;

    public static void main(String[] args) {
        MyEnum mye = MyEnum.Sunday;
        MyEnum mye1 = MyEnum.Monday;

        // 1. ordinal():宣告順序索引(從 0 開始)
        System.out.println(mye.ordinal());   // 6
        System.out.println(mye1.ordinal());  // 0

        // 2. name() / toString():常數名稱
        System.out.println(mye);        // Sunday
        System.out.println(mye.name()); // Sunday

        // 3. values():取得所有常數陣列
        MyEnum mye2 = MyEnum.values()[1]; // Tuesday
        MyEnum mye3 = MyEnum.values()[2]; // Wednesday
        System.out.println(mye2);
        System.out.println(mye3);

        // 4. equals():比較是否同一常數
        System.out.println(MyEnum.Monday.equals(MyEnum.Monday)); // true

        // 5. 遍歷所有常數
        System.out.println(MyEnum.values().length); // 7
        for (MyEnum e : MyEnum.values()) {
            System.out.println(e);
        }
    }
}

執行結果

6
0
Sunday
Sunday
Tuesday
Wednesday
true
7
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

進階特性

  • 類型安全:編譯期保證只能是預定常數。
  • 可帶屬性、方法、建構子:enum Color { RED(0xFF0000), GREEN(0x00FF00); private int rgb; Color(int rgb){this.rgb=rgb;} public int getRgb(){return rgb;} }
  • 實作介面:枚舉可 implements 介面,每個常數可覆寫方法(多態)。
  • EnumSet / EnumMap:高效位向量集合與鍵為枚舉的 Map,效能優於通用集合。
  • switch 支援:switch(day) { case Monday: ... } 編譯器優化為查表跳轉。

最佳實踐

  1. 單例模式首選 enum Singleton { INSTANCE; }(防反射/序列化破壞)。
  2. 狀態機、策略模式用枚舉實作,消除 if-else 鏈。
  3. 避免在枚舉中進行耗時操作或持有大量狀態。

枚舉是 Java 5 引入的強大特性,善用它能讓代碼更安全、清晰、高效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved