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

Eclipse 3.1 深度體驗 J2SE 5.0 枚舉類型 (2):建立精靈、Enum 繼承結構與建構子映射機制

     編輯:J2SE

Eclipse 3.1 枚舉建立精靈:可視化建立流程

Eclipse 3.1 引入專屬Enum Wizard,引導開發者逐步建立枚舉類型:

  1. File → New → Other → Java → Enum
  2. 填寫套件名、枚舉類別名(如 Priority)。
  3. 在「Enum Constants」頁面輸入常數名(HIGH, MEDIUM, LOW),可逐行編輯。
  4. 點擊 Finish,自動生成標準枚舉骨架。

Eclipse Enum Wizard 生成的 Priority 枚舉

Enum 繼承結構:隱含 extends java.lang.Enum

核心規則

  • 所有枚舉類型隱含繼承 java.lang.Enum<E>(E 為該枚舉類型本身)。
  • Enum 是 final 類別,不可被直接繼承(編譯錯誤)。
  • 不可寫 class MyEnum extends Enum,必須用 enum 關鍵字定義。

// 錯誤:不能直接繼承 Enum
public class MyEnum extends Enum { } // 編譯錯誤

// 正確:使用 enum 關鍵字
public enum Priority { HIGH, MEDIUM, LOW }

Eclipse 錯誤:不能直接繼承 Enum 類別

繼承鏈實際結構


// 來源碼
public enum Priority { HIGH, MEDIUM, LOW }

// 編譯器生成的等效結構(概念示意)
public final class Priority extends Enum<Priority> {
    public static final Priority HIGH = new Priority("HIGH", 0);
    public static final Priority MEDIUM = new Priority("MEDIUM", 1);
    public static final Priority LOW = new Priority("LOW", 2);
    // 私有建構子、values()、valueOf() 等靜態方法...
}

建構子映射機制:從 Enum(String, int) 到自訂建構子

預設映射:Enum(String name, int ordinal)

每個枚舉值宣告時,編譯器自動呼叫父類別 Enum 的建構子:


// enum Priority { HIGH, MEDIUM, LOW } 等效於:
new Enum<Priority>("HIGH", 0);
new Enum<Priority>("MEDIUM", 1);
new Enum<Priority>("LOW", 2);
  • name:常數識別字串(name() 返回)。
  • ordinal:宣告順序索引,從 0 開始(ordinal() 返回)。

自訂建構子:參數注入與實例欄位

枚舉類別可定義自己的建構子(隱含 private),常數宣告時傳入參數:


enum Priority {
    HIGH(38), MEDIUM(36.5), LOW(5.2); // 常數宣告傳參

    private final double temperature; // 實例欄位

    Priority(double t) {              // 自訂建構子
        this.temperature = t;
    }

    public double getTemperature() { return temperature; }
}

運作流程:

  1. 編譯器為每個常數生成呼叫自訂建構子的代碼:new Priority(38)、new Priority(36.5)、new Priority(5.2)。
  2. 自訂建構子內部隱含呼叫 super(name, ordinal),完成父類別初始化。
  3. 常數宣告時不需 new 關鍵字,語法糖簡化建立過程。

Eclipse 3.1 智能支援

  • Enum Wizard 自動生成 enum Priority { HIGH, MEDIUM, LOW } 骨架,游標定位於常數區便於擴充。
  • 輸入 enum 關鍵字時,內容輔助提示「Create new enum type」。
  • 常數宣告後輸入 ;,編輯器自動切換到類別主體區塊(欄位/建構子/方法區)。
  • 建構子參數變更時,所有常數呼叫處同步提示參數不匹配。

總結

理解 enum 隱含 extends Enum<E>、不可直接繼承 Enum、建構子映射雙層機制(父類 Enum(String,int) + 自訂建構子),是掌握枚舉類型底層運作的關鍵。Eclipse 3.1 以精靈化建立、即時錯誤標記、語法糖自動處理,讓開發者輕鬆享受枚舉的型別安全與表達力優勢。

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