zoukankan      html  css  js  c++  java
  • java中的枚举类

    原理

    枚举类中得枚举项都会被编译成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(枚举类)
    非常好的文章,推荐阅读!

  • 相关阅读:
    文件夹生成zip
    html 字符串 生成 pdf 完美解决中文不显示
    layui 数据表格+分页+搜索+checkbox+缓存选中项数据
    排序算法总结
    排序算法(10)--Distribution Sorting--分布排序[2]--Radix Sort--基数排序
    排序算法(8)--Merge Sorting--归并排序--Merge sort--归并排序
    [Android]在Dagger 2中使用RxJava来进行异步注入(翻译)
    [Android]使用Dagger 2进行依赖注入
    [Android]Android端ORM框架——RapidORM(v2.1)
    [Android]使用MVP解决技术债务(翻译)
  • 原文地址:https://www.cnblogs.com/wunsiang/p/12808745.html
Copyright © 2011-2022 走看看