Java枚举类的name()方法返回声明时的原始字面名称,区分大小写且只读;它与valueOf()互为逆操作,但不可用于用户显示或业务含义表达。

Java 枚举类的 name() 方法直接返回该枚举常量在源码中声明时使用的**字面名称(identifier)**,不经过任何转换,区分大小写,且不可修改。
name() 方法的基本用法
每个枚举常量都继承自 java.lang.Enum,自动拥有 name() 和 ordinal() 等方法。name() 返回的是定义时写的原始标识符字符串。
- 例如定义
enum Color { RED, GREEN, BLUE },调用Color.RED.name()返回字符串"RED" - 它不是获取描述性文本,也不等同于
toString()(后者可被重写,name()永远固定) - 不能对
name()的返回值做赋值或修改,它是只读属性
name() 与 valueOf() 的对应关系
name() 的返回值可原样传给静态方法 valueOf(Class, String) 来反向查找枚举实例。
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
-
Color.RED.name()→"RED" -
Color.valueOf("RED")→ 返回Color.RED - 若传入的字符串和任一枚举常量的
name()不完全匹配(如大小写错误、拼写错误),会抛出IllegalArgumentException
常见误区与注意事项
避免把 name() 和业务含义混淆:
立即学习“Java免费学习笔记(深入)”;
- 不要用
name()显示给用户(比如显示 "RED" 而不是“红色”),应配合自定义字段或重写toString() - 枚举常量名一旦写死,后续修改会影响所有依赖
name()的逻辑(如配置文件、数据库存储值、JSON 序列化默认行为) - 序列化框架(如 Jackson)默认使用
name()输出字符串;如需别名,需用@JsonValue或@JsonProperty注解干预
简单示例代码
public enum Status {
PENDING, APPROVED, REJECTED;
}
System.out.println(Status.PENDING.name()); // 输出:PENDING
System.out.println(Status.valueOf("APPROVED")); // 正常返回 Status.APPROVED

















