• Java — 枚举


    关于枚举
    1.枚举的基本介绍
    • 枚举是一个特殊的类,一般表示一组常量
    • 数据是一定范围的值,而不是任意值
    2.枚举的定义
    • 使用enum关键字来定义,每个常量使用,来分隔

      权限修饰符 enum enumName{
      	元素1,
      	元素2,
      	元素3,
      	…………
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 最后一个数据元素用;结尾(只定义了数据元素时可以省略)

      public enum Color {//不能继承某个类,可以实现接口
          //数据元素(用大写字母表示,本质上为常量)
          //数据元素必须定义
          RED,
          BLUE,//默认调用了无参构造方法
          GREEN;//(只定义了数据元素时,可以省略分号)
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    枚举的本质

    Java中enum本质上就是一个

    1.枚举的成员
    • 枚举的成员就是枚举对象,只不过他们是静态常量而已

    • 如果用类来模拟枚举的话

      //用类模拟枚举
      public class Color1 {
          //枚举成员的本质(静态常量)
          public static final Color1 RED = new Color1();
          public static final Color1 BLUE = new Color1();
          public static final Color1 GREEN = new Color1();
      
          //此时只能在类内进行访问
          private Color1(){
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
    2.枚举可以添加构造方法
    • 只能定义私有的构造方法

    • 枚举中显式定义了带参的构造方法后,定义数据元素时必须手动调用

      public enum Color {
          //枚举中显式定义了带参的构造方法后,定义数据元素时必须手动调用
          RED("红色"),
          BLUE("蓝色"),
          GREEN("绿色");
      
          //定义带参数的构造方法(只能定义私有构造方法)
          private Color(String colorName){
              //对属性进行初始化
              this.colorName = colorName;
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
    3.枚举与类的区别
    • 枚举不可以实例化(编译器自动为其构造方法加上了private)

      //Color color = new Color();//不能通过构造方法去创建对象
      Color color = Color.RED;//直接赋值定义的元素即可
      printColor(color);
      
      • 1
      • 2
      • 3
    • 不定义setter方法,只提供getter方法

    • 不能继承某个类,但是可以实现接口

    • 所有枚举类默认继承Enum

    4.枚举的特点
    • 数值在程序中是稳定的

    • 所以有枚举类都继承了Enum类的方法

      toString(可以重写)
      equals
      hashcode
      
      • 1
      • 2
      • 3
    • 枚举成员也是常量,所以不能用数字开头

    • 不可以用=为枚举常量赋值

  • 相关阅读:
    libevent学习——Reactor模式
    进阶实验4-3.2 Windows消息队列(优先队列的使用,比较器的使用)
    深度学习概述:从基础概念、计算步骤到调优方法
    简易留言板
    高速密码工程化的若干实践与思考
    【技术追踪】SAM(Segment Anything Model)代码解析与结构绘制之Mask Decoder
    深度学习中的偏差、方差、正则化
    Google Earth Engine(GEE)——计算特定区域得每年特点月份得1985-2021年得ndvi影像值
    【编程题】【Scratch四级】2020.06 正话反说
    Spring、SpringMVC和SpringBoot
  • 原文地址:https://blog.csdn.net/m0_60610120/article/details/127707722