JDK新特性之枚举

​​

创建枚举需要使用关键字enum。
public enum Color {
    Red,Yellow,Blue,Blank,Green;//枚举常量。被隐式声明为Color的共有、静态、final成员。
    //在Java语言中,这些常量是子类型的(self-typed)

}
package com.itheima.enum1;

public class Demo1 {
    public static void main(String[] args) {
        //Color c=new Color();
        // 不能使用new实例化枚举,会报错
        Color c;
        c = Color.Red;//赋值在Color枚举中定义的值
        switch (c) {//枚举可以用在switch中,case使用的常量必须与switch表达式使用的枚举类型相同
            case Red:
                System.out.println("red");
                break;
            case Blank:
                System.out.println("blank");
                break;
            case Blue:
                System.out.println("blue");
                break;
            case Green:
                System.out.println("green");
                break;
            case Yellow:
                System.out.println("yellow");
                break;
        }
    }
}
package com.itheima.enum1;

public class Demo2 {
    public static void main(String[] args) {
        //所有枚举都包含两个预定义方法:values()和valueOf()
        //values方法返回一个包含枚举常量列表的数组
        Color[] colors=Color.values();
        for(Color c:colors){
            System.out.println(c);
        }
        System.out.println("-----------");
        //valueOf方法返回传递到参数str的字符串相对应的枚举常量
        Color col = Color.valueOf("Red");
        System.out.println(col);

    }

}

java枚举是类类型。可以为枚举提供构造函数、添加实例变量和方法,甚至可以实现接口。

枚举有两条限制:
    (1)枚举不能继承其他类。但是所有枚举都自动继承超类 java.lang.Enum
    (2)枚举不能是超类
public enum Apple {
    Jonathan(10), GoldenDel(9), RedDel, Winesap(15), Cortland(8);
    //常量后面括号里的数字为构造方法的参数
    private int price;

    Apple() {
        this.price = 0;
    }

    //RedDel没有提供参数,则会调动默认构造方法
    Apple(int price) {
        this.price = price;
    }

    public int getPrice() {
        return price;
    }
}
public class AppleDemo {
    public static void main(String[] args) {
        Apple a;
        a = Apple.Cortland;
        System.out.println(a + "---" + a.getPrice());
        //输出Cortland的价格
        System.out.println(Apple.RedDel.getPrice());
        //输出RedDel的价格,因调用的默认方法,价格为初始化的0
    }
}

猜你喜欢

转载自blog.csdn.net/fy_java1995/article/details/81385280