Java 枚举

1. 枚举

        (1) 枚举是一种特殊的类

        (2) 格式:修饰符 enum 枚举类名{

                                名称一,名称二....;

                                其他成员....

                        }

public enum A {
    //第一行必须罗列枚举对象的名字
    A, B, C;

    private String name;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

public static void main(String[] args) {
        A a1 = A.A;
        System.out.println(a1);//A
}

        (3) 枚举类的特点:

                ① 枚举类的第一行只能罗列一些名称,这些名称都是常量,并且每个常量记住的都是枚举类的一个对象

                ② 枚举类的构造器都是私有的(写不写都只能是私有的),枚举类不能创建对象。

                ③ 枚举都是最终类,不可以被继承。

                ④ 枚举类中,从第二行开始,可以定义类的其他各种成员

                ⑤ 编译器为枚举类新增了几个方法,并且枚举类都是继承:Java.lang.Enum类的,从enum类也会继承到一些方法

                      

public static void main(String[] args) {
        A a1 = A.A;
        System.out.println(a1);//A

        //1.枚举类的构造器都是私有的,不能对外创建对象
        //A a = new A();

        //2. 枚举类的第一行都是常量,记住的是枚举类的对象
        A a2 = A.B;
        System.out.println(a2);//B

        //3.枚举提供一些额外的api
        A[] as = A.values();//拿到全部对象
        System.out.println(as.toString());
        A a3 = A.valueOf("C");
        System.out.println(a3.name());//c
        System.out.println(a3.ordinal());//索引 2
}

2. 枚举实现单例

public enum A {
    A

    //可以写一些成员方法或成员变量    
}

3. 抽象枚举

//抽象枚举
public enum B {
    //:第一行的枚举对象 需要重写抽象方法
    A("卡莎"){
        @Override
        public void run() {
            System.out.println(A.getName());
        }
    }, B(){
        @Override
        public void run() {

        }
    }, C(){
        @Override
        public void run() {

        }
    };

    private String name;

    B() {
    }

    B(String name) {
        this.name = name;
    }

    public abstract void run();

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}



public static void main(String[] args) {
     
        B b1 = B.A;
        b1.run();//卡莎

}

4. 常见的应用场景

        用来表示一组信息,然后作为参数进行传输

public enum NumberEnum {
    NUM1,
    NUM2,
    NUM3,
    NUM4,
    NUM5,
    NUM6,
    NUM7;
}


public class Test {
    public static void main(String[] args) {
        xiqing(NumberEnum.NUM1);//星期一
    }

    public static void xiqing(NumberEnum numberEnum) {
        switch (numberEnum){
            case NUM1:
                System.out.println("星期一");
                break;
            case NUM2:
                System.out.println("星期二");
                break;
            case NUM3:
                System.out.println("星期三");
                break;
            case NUM4:
                System.out.println("星期四");
                break;
            case NUM5:
                System.out.println("星期五");
                break;
            case NUM6:
                System.out.println("星期六");
                break;
            case NUM7:
                System.out.println("星期日");
                break;
        }
    }
}

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值