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

Java Enum 完整指南:兩種定義方式、Switch 使用、值轉 Enum 實戰

     編輯:Java 綜合教學

方式一:簡單列舉

public enum SexEnum { MALE, FEMALE }

方式二:帶屬性與建構子

public enum SexEnum1 {
    MALE(1), FEMALE(2);
    private final int id;
    private SexEnum1(int id) { this.id = id; }
    public static SexEnum1 getEnum(int id) {
        for (SexEnum1 s : values()) if (s.id == id) return s;
        return null;
    }
}

實戰測試代碼

public class TestEnum {
    public static void main(String[] args) {
        // 1. 列舉所有名稱
        for (SexEnum sex : SexEnum.values()) 
            System.out.println(sex.name());

        // 2. Switch 直接使用 Enum
        SexEnum sex = SexEnum.MALE;
        switch (sex) {
            case MALE: System.out.println("男性"); break;
            case FEMALE: System.out.println("女性"); break;
            default: System.out.println("其他");
        }

        // 3. 透過數值取得 Enum 物件
        SexEnum1 s = SexEnum1.getEnum(3); // 找不到回傳 null
        switch (s) {
            case MALE: System.out.println("男"); break;
            case FEMALE: System.out.println("女"); break;
            default: System.out.println("其他");
        }
    }
}

關鍵特性總結

  • values():靜態方法,回傳所有列舉常數陣列
  • name():取得常數名稱字串
  • ordinal():取得宣告順序 (0-based)
  • 建構子必須 private,不可外部實例化
  • 可實作介面、定義方法、欄位,功能等同類別
  • Switch 可直接用 Enum 型別,編譯器自動補全 case
  • 序列化自動處理,單例模式最佳實踐之一

進階用法提示

  • 策略模式:每個常數實作不同行為
  • 狀態機:Enum 表示狀態,轉換邏輯封裝在內
  • 替代常數介面:類型安全、命名空間隔離、IDE 補全
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved