java中的枚举类

2021-02-02 13:17

阅读:479

标签:参考   私有化   一个   tail   本质   rgs   png   直接   yellow   

原理

枚举类中得枚举项都会被编译成static final T类型的对象作为枚举类的属性
技术图片

接下来我们以实例的方式讲解枚举类的属性与方法

  • 由于枚举类已经继承了Enum类,所以不能继承其他的类。

  • 由于枚举类会被编译器处理为final类,所以不能被继承。

  • enum是一个关键字,使用enum定义的枚举类本质上就相对于一个类继承了Enum这个抽象类而已。所以说enum定义的枚举结构实际上就是一个多例类!

使用

public enum Weekday {
    SUN(0),MON(1),TUE(2);//通过构造函数指定属性值
    int valueT;
    Weekday(int v){
        valueT = v;
    }

    public static void main(String[] args) {
        for(Weekday w : Weekday.values()) {//values为所有的枚举项
            System.out.println(w.name());//名称,即枚举项的字符含义
            System.out.println(w.valueT);//自已定义的属性
            System.out.println(w.ordinal());//枚举项所处次序,从0开始
        }
    }
}

switch()参数可以使用enum

enum Signal {
    GREEN, YELLOW, RED
}

public class TrafficLight {
    Signal color = Signal.RED;

    public void change() {
        switch (color) {//参数是枚举类的话,底下可以直接case枚举项
        case RED:
            color = Signal.GREEN;
            break;
        case YELLOW:
            color = Signal.RED;
            break;
        case GREEN:
            color = Signal.YELLOW;
            break;
        }
    }
}

使用枚举实现线程安全的单例模式

public class User {
????//私有化构造函数
????private User(){ }
????//定义一个静态枚举类
????static enum SingletonEnum{
????????//创建一个枚举对象,该对象天生为单例
????????INSTANCE;
????????private User user;
????????//私有化枚举的构造函数
????????private SingletonEnum(){
????????????user=new User();
????????}
????????public User getInstnce(){
????????????return user;
????????}
????}
????//对外暴露一个获取User对象的静态方法
????public static User getInstance(){
????????return SingletonEnum.INSTANCE.getInstnce();
????}
}

参考资料

重新认识java(十) ---- Enum(枚举类)
非常好的文章,推荐阅读!

java中的枚举类

标签:参考   私有化   一个   tail   本质   rgs   png   直接   yellow   

原文地址:https://www.cnblogs.com/wunsiang/p/12808745.html


评论


亲,登录后才可以留言!