Java中enum(枚舉)的基本應用

枚舉是將一組具名的值的有限集合創建爲一種新的類型,而這些具名的值可以作爲常規的程序組件使用,常用來表示一組常數。在Java中,除了不能繼承自一個enum之外,我們基本上可將enum看作一個常規的類。

 

基本用法:

enum Color {
    BLUE, WHITE, GREEN
}

public class EnumTest {
    public static void main(String[] args) {
        //values()方法返回代表枚舉中所有值的數組
        for (Color color : Color.values()) {
            printColor(color);
        }

        //使用valueOf()或者具體名字獲取枚舉值
        System.out.println(Color.valueOf("BLUE"));
        System.out.println(Color.GREEN);
    }

    public static void printColor(Color color) {
        //name()方法返回枚舉的名字
        System.out.print("name: " + color.name());

        //ordinal()方法返回枚舉聲明的次序
        System.out.print(" ordinal: " + color.ordinal());

        //在switch中使用枚舉
        switch (color) {
            case BLUE:
                System.out.println(" RGB code: #0000FF");
                break;
            case WHITE:
                System.out.println(" RGB code: #FFFFFF");
                break;
            case GREEN:
                System.out.println(" RGB code: #008000");
                break;
        }
    }
}

 

 

輸出:

name: BLUE ordinal: 0 RGB code: #0000FF
name: WHITE ordinal: 1 RGB code: #FFFFFF
name: GREEN ordinal: 2 RGB code: #008000
BLUE
GREEN

 

 

添加屬性,構造函數和方法:

enum Color {
    // 調用構造函數初始化枚舉
    // 必須先聲明枚舉值再聲明變量和方法
    // 如果有變量或者方法,則最後一個枚舉聲明後面必須加分號
    BLUE("#0000FF"),
    WHITE("#FFFFFF"),
    GREEN("#008000");

    private String rgbCode;
    //構造函數,必須爲private
    private Color(String rgbCode){
        this.rgbCode = rgbCode;
    }
    // 枚舉方法
    public String getRgbCode(){
        return rgbCode;
    }
}
public class EnumTest {
    public static void main(String[] args) {
        for (Color color : Color.values()) {
            printColor(color);
        }
    }

    public static void printColor(Color color) {
        //調用枚舉的方法
        System.out.println(color.name() + ": " + color.getRgbCode());
    }
}

 輸出:

BLUE: #0000FF
WHITE: #FFFFFF
GREEN: #008000

 

 靜態方法,實例方法與重載:

enum Color {
    BLUE {
        //覆蓋實例方法
        public String getRGBCode() {
            return "#0000FF";
        }
    },
    WHITE {
        public String getRGBCode() {
            return "#FFFFFF";
        }
    },
    GREEN;

    //實例方法(也可定義抽象方法讓具體枚舉實現)
    public String getRGBCode() {
        return "Not Defined.";
    }

    //靜態方法
    public static String getColorInfo(){
        return "Color: Blue, White, Green.";
    }
}

public class EnumTest {
    public static void main(String[] args) {
        System.out.println(Color.getColorInfo());

        for (Color color : Color.values()) {
            System.out.println(color.name() + ": " + color.getRGBCode());
        }
    }
}

 輸出:

Color: Blue, White, Green.
BLUE: #0000FF
WHITE: #FFFFFF
GREEN: Not Defined.

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章