小编典典

Java 枚举 - 为什么使用 toString 而不是名称

all

如果您查看 enum api
的方法name(),它会说:

返回此枚举常量的名称,与其枚举声明中的声明完全相同。大多数程序员应该优先使用 toString 方法,因为 toString
方法可能会返回一个对用户更友好的名称。此方法主要设计用于正确性取决于获取确切名称的特殊情况,该名称不会因版本而异。

为什么更好用toString()?我的意思是当 name() 已经是 final 时,可能会覆盖 toString。因此,如果您使用 toString
并且有人覆盖它以返回一个硬编码的值,那么您的整个应用程序就会关闭......此外,如果您查看源代码,则 toString()
方法会准确返回名称,并且只返回名称。这是同一件事。


阅读 75

收藏
2022-07-28

共1个答案

小编典典

这实际上取决于您要对返回值做什么:

  • 如果您需要获取用于声明枚举常量的确切名称,则应使用name()astoString可能已被覆盖
  • 如果您想以用户友好的方式打印枚举常量,您应该使用toString可能已被覆盖(或不被覆盖!)。

当我觉得可能会造成混淆时,我提供了一个更具体的getXXX方法,例如:

public enum Fields {
    LAST_NAME("Last Name"), FIRST_NAME("First Name");

    private final String fieldDescription;

    private Fields(String value) {
        fieldDescription = value;
    }

    public String getFieldDescription() {
        return fieldDescription;
    }
}
2022-07-28