use*_*379 3 java enums anti-patterns
变量的名称可以更改,不应影响逻辑.但是name()Enum中的方法返回一个常量名称作为值,因此它可以破坏现有代码.我应该避免使用name()吗?
例如,
public enum Example1 {FOO, BAR}
Run Code Online (Sandbox Code Playgroud)
重构FOO名称FOO2将制动Example1.FOO.name().equals("FOO").
public enum Example2 {
FOO("FOO"),
BAR("BAR");
String code;
private Example2(final String code) {
this.code = code;
}
public String getCode() {
return code;
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,更改FOO名称FOO2将不会制动Example2.FOO.getCode().equals("FOO").
name()直接使用.原因:即使名称发生变化,语义(与之前相同的枚举值)也保持不变.name()使用时,序列化/反序列化值.这会影响数据库(使用O/R映射的名称时),存储在文件中或通过线路传输的序列化数据(JSON/XML/YAML/...序列化),日志条目等.| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |