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(枚举类)
    非常好的文章,推荐阅读!

  • 相关阅读:
    我的航拍直升机 控制基站软件的编写历程(2.2)——Qt Creator 版本控制系统
    windows下QT开发环境建立方法
    QT 4.5 windows版本 安装问题 及 Junction 使用
    各种平台下编译qt工程
    华为面试题
    strcpy,strncpy,strlcpy,memcpy
    QT/E 更换字体问题
    Linux设备驱动编程中断处理
    oracle数据库连接池的使用
    Windows下QT的安装
  • 原文地址:https://www.cnblogs.com/wunsiang/p/12808745.html
Copyright © 2011-2022 走看看