gpt4 book ai didi

java - 什么时候可以使用枚举的名称()

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:01:02 26 4
gpt4 key购买 nike

变量的名称可以更改,不应影响逻辑。但是 Enum 中的 name() 方法返回一个常量名称作为值,因此它可以破坏现有代码。我应该避免使用 name() 吗?

例如,

public enum Example1 {FOO, BAR}

FOO name 重构为 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") .

最佳答案

  • 业务逻辑应该使用枚举值,而不是直接使用name()。原因:即使名称改变,语义(与以前相同的枚举值)保持不变。
  • name()序列化/反序列化 值时使用。这会影响数据库(当使用名称进行 O/R 映射时)、存储在文件中或通过网络传输的序列化数据(JSON/XML/YAML/...序列化)、日志条目等。
    更改名称可能需要在第 3 方代码中进行数据迁移或适配。

关于java - 什么时候可以使用枚举的名称(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52326269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com