枚举

当对象的个数固定的时候,我们可以用enum关键字替代class关键字,定义一个枚举类。在枚举类内部,我们直接把枚举类实例化成对象,枚举类的对象称作枚举项。实例化语法:对象名(成员变量参数),不需要new出新对象再传递给变量名。此外还需要把构造函数私有化,防止外部实例化该枚举类。枚举项在底层其实就是常量,JVM中默认会在枚举项前加上public static final,外部可以直接通过类名调用类中的枚举项,并且枚举项的内容不可修改。

main方法调用该枚举类的语法:变量名 = 类名.枚举项
然后通过:
switch(变量名){
case 枚举项->system.out.println(内容);
}
根据变量名匹配对应的枚举项,再输出相应内容

枚举的注意事项

  • 每一个枚举项,都是该枚举类的对象,每一个对象都是通过构造方法创造出来的
  • 枚举项在底层其实就是常量,默认用public static final修饰
  • 枚举类的第一行上必须是枚举项,枚举项之间用逗号隔开,以分号左右结尾
  • 枚举类的构造方法必须是private修饰,不让外界创建本类的对象,也可以省略不写,JVM默认会加上private
  • 编译器会给枚举类新增两个默认存在的方法,values(),valueOf

values():表示获取本类所有的枚举项
valueOf():表示获取一个指定的枚举项,相当于用类名调用枚举项

枚举类.valueOf (字符串) = 通过名字找枚举常量
字符串 → 转成枚举对象

假设有枚举项RED

Color.RED
→ 编译期就确定,写死的,最安全最快
Color.valueOf(变量)
运行时才知道名字动态查找枚举
→ 前端传参、数据库读取、配置文件解析…… 都靠它
Color.valueOf("RED")
→ 语法合法,但纯属多余,正常人不这么写

只有参数是动态变量时,valueOf 才有意义;
传固定字符串,那就是多此一举。

posted @ 2026-04-20 11:46  ZealousMclaren  阅读(12)  评论(0)    收藏  举报