变量的名称可以更改,不应影响逻辑。但是Enum中的name()
方法返回一个常量名作为值,因此它可以破坏现有代码。我应该避免使用name()
吗?
例如,
public enum Example1 {FOO, BAR}
将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;
}
}
在这种情况下,将FOO
的名称更改为FOO2
不会阻止Example2.FOO.getCode().equals("FOO")
。
答案 0 :(得分:5)
name()
。原因:即使名称更改,语义(与以前相同的枚举值)也保持不变。name()
。这会影响数据库(在使用名称进行O / R映射时),存储在文件中或通过有线传输的序列化数据(JSON / XML / YAML / ...序列化),日志条目等。 答案 1 :(得分:-2)
使用枚举类型时,我总是比较枚举本身,而不是枚举的名称(字符串)。
Example2.FOO.equals(Example2.getEnumByName("FOO"));