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

Java 1.5 Enum 枚舉類型完整指南:從基礎到進階應用

     編輯:Java 相關知識

什麼是 Enum?

Enum 是 enumeration(枚舉)的縮寫,屬於 java.lang 套件。熟悉 C、C++、C# 或 Pascal 的開發者對此概念應不陌生。簡單來說,Enum 定義了一組固定的常量值,例如:

public enum Season { WINTER, SPRING, SUMMER, FALL }

每個 Enum 實例都是該類型的唯一對象,無法存在重複值。在 Java 1.5 之前,開發者通常透過介面模擬枚舉:

public interface Season {
    static int WINTER = 0;
    static int SPRING = 1;
    // ...
}

引入 Enum 後,寫法更簡潔,且每個值會自動獲得從 0 開始遞增的序數。

基本用法範例

package net.javagarage.enums;

public class EnumDemo {
    private enum Seasons { WINTER, SPRING, SUMMER, FALL }

    public static void main(String[] args) {
        for (Seasons s : Seasons.values()) {
            System.out.println(s);
        }
    }
}

執行結果:

WINTER
SPRING
SUMMER
FALL

Enum 在 Switch 陳述式中的應用

package net.javagarage.enums;

public class EnumSwitch {
    private enum Color { RED, BLUE, GREEN }

    public static void main(String[] args) {
        doIt(Color.RED);
    }

    private static void doIt(Color c) {
        switch (c) {
            case RED:
                System.out.println("value is " + Color.RED);
                break;
            case GREEN:
                System.out.println("value is " + Color.GREEN);
                break;
            case BLUE:
                System.out.println("value is : " + Color.BLUE);
                break;
            default:
                System.out.println("default");
        }
    }
}

注意:switch case 中直接使用非限定名稱(如 case RED:),而非 case Color.RED:。

為 Enum 添加屬性與方法

Enum 可以像一般類別一樣擁有屬性、方法(靜態與非靜態),但值的列表必須緊跟在 enum 宣告之後,否則編譯錯誤。

public class EnumWithMethods {
    public enum Season {
        WINTER, SPRING, SUMMER, FALL;
        private final static String LOCATION = "Phoenix";

        public static Season getBest() {
            if (LOCATION.equals("Phoenix"))
                return WINTER;
            else
                return SUMMER;
        }
    }

    public static void main(String[] args) {
        System.out.println(Season.getBest());
    }
}

Enum 建構子與實例欄位

Enum 可自訂建構子,為每個常量賦予特定數據:

public class EnumConstructor {
    public static void main(String[] a) {
        for (Temp t : Temp.values())
            System.out.println(t + " is : " + t.getValue());
    }

    public enum Temp {
        ABSOLUTE_ZERO(-459), FREEZING(32),
        BOILING(212), PAPER_BURNS(451);

        private final int value;

        Temp(int value) { this.value = value; }

        public int getValue() { return value; }
    }
}

輸出:

ABSOLUTE_ZERO is : -459
FREEZING is : 32
BOILING is : 212
PAPER_BURNS is : 451

最佳實踐建議

雖然 Enum 功能強大,但不宜濫用。若需複雜行為,直接定義類別更合適。Enum 的優勢在於定義一組語義明確的常量,且這些值具有特殊業務含義時。

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