Java 8枚举中使用关键字new作为枚举值报语法错误如何解决
报错原因
new是Java的保留关键字,禁止直接用作标识符(包括枚举值、变量名、类名、方法名等),这是语法层面的强制约束,所以你写的代码会直接编译报错。
可行实现方案
有两种常用方案,可根据你的业务需求选择:
- 方案1:调整枚举值命名(符合Java开发规范,优先推荐)
Java枚举值官方编码规范推荐使用全大写下划线分隔的命名风格,你可以直接把new改为全大写的NEW,代码示例:
public enum StatusEnum { NEW, DONE }
如果你的业务场景需要枚举对外输出的值为小写的new,可以用第二种方案。
- 方案2:枚举绑定自定义业务值
给枚举增加自定义属性存储你需要的字面量,对外暴露方法获取实际业务值,既不违反Java语法约束,也能满足业务上需要new作为对应值的需求,代码示例:
public enum StatusEnum { NEW("new"), DONE("done"); // 存储实际业务需要的字面量 private final String businessValue; // 枚举构造方法 StatusEnum(String businessValue) { this.businessValue = businessValue; } // 对外提供获取业务值的方法 public String getBusinessValue() { return businessValue; } // 若需要直接打印枚举时输出小写值,可重写toString方法 @Override public String toString() { return businessValue; } }
使用时调用StatusEnum.NEW.getBusinessValue()即可得到字符串new,完全满足业务需求。
内容的提问来源于stack exchange,提问作者arash yousefi
相关产品推荐
相关产品推荐

