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.

 

 

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