码迷,mamicode.com
首页 > 编程语言 > 详细

java中的枚举类

时间:2020-04-30 15:40:02      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:参考   私有化   一个   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!