我刚刚注意到Enum#toString
javadoc状态(强调我的):
返回声明中包含的此枚举常量的名称。此方法可能会被覆盖,尽管它通常不是必需的或不可取的。当存在更“程序员友好”的字符串形式时,枚举类型应覆盖此方法。
默认情况下,toString()
返回name()
相同的东西,所以即使toString
被覆盖,仍然可以通过name()
方法访问枚举的名称。
有谁知道为什么Enum#toString
不希望覆盖?
编辑:作为参考,name()
's javadoc(重点与原文相同):
返回此枚举常量的名称,与其枚举声明中的声明完全相同。大多数程序员应该优先使用 toString() 方法而不是这个方法,因为 toString 方法可能会返回一个对用户更友好的名称。此方法主要设计用于正确性取决于获取确切名称的特殊情况,该名称不会因版本而异。