java中enum定义枚举本质是特殊类,用于表示固定命名常量;支持简单声明、带字段构造器、内置方法(name/ordinal/values/valueof)及switch语句安全使用。

Java 中用 enum 关键字定义枚举,本质是创建一个特殊的类,用于表示一组固定的、命名的常量值。
基本语法:定义简单枚举
最常见写法是直接列出所有枚举常量,每个常量名必须是合法标识符,且默认为 public static final:
- 枚举常量之间用逗号分隔,结尾可加或不加分号(建议加分号,尤其后续要添加方法时)
- 枚举类型名首字母通常大写(如 Day、Color)
- 常量名全大写(如 MONDAY、RED),符合常量命名规范
示例:
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}
带字段和构造方法的枚举
枚举可以像普通类一样定义私有字段、构造器(只能是 private)、getter 方法,实现更丰富的语义:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- 每个枚举常量在声明时调用私有构造器初始化字段
- 构造器不能是 public 或 protected,只能是 private(编译器会强制)
- 字段通常用 private final 修饰,保证不可变
示例(带中文描述和序号):
public enum Color {
RED("红色", 1),
GREEN("绿色", 2),
BLUE("蓝色", 3);
private final String desc;
private final int code;
Color(String desc, int code) {
this.desc = desc;
this.code = code;
}
public String getDesc() { return desc; }
public int getCode() { return code; }
}
枚举常用操作方法
所有枚举类自动继承 java.lang.Enum,因此天然支持以下方法:
-
name():返回枚举常量的名称(如
Color.RED.name()返回"RED") -
ordinal():返回声明顺序的索引(从 0 开始,如
Color.GREEN.ordinal()是 1) -
values():返回包含所有枚举常量的数组(如
Color.values()) -
valueOf(String):根据名称字符串查找对应枚举(大小写敏感,不存在抛
IllegalArgumentException)
在 switch 中使用枚举
Java 7+ 支持直接用枚举类型作为 switch 表达式,比用 int 或 String 更安全、更清晰:
- case 后直接写枚举常量名(无需写类名前缀,如
case RED:) - 编译器能检查是否覆盖全部枚举值(配合
default可避免遗漏)
示例:
Color c = Color.BLUE;
switch (c) {
case RED:
System.out.println("选了红色");
break;
case GREEN:
System.out.println("选了绿色");
break;
case BLUE:
System.out.println("选了蓝色");
break;
}Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










