我刚刚注意到Enum#toStringjavadoc声明(强调我的):
返回声明中包含的此枚举常量的名称.可以覆盖该方法,但通常不是必需的或不希望的.当存在更"程序员友好"的字符串形式时,枚举类型应该重写此方法.
默认情况下,toString()并name()返回相同的事情,所以甚至一度toString被重写,人们仍然可以通过访问枚举的名称name()的方法.
有人知道为什么压倒不合适Enum#toString吗?
编辑:供参考,name()是javadoc(重点与原文一样):
返回此枚举常量的名称,与其枚举声明中声明的完全相同.大多数程序员应优先使用toString()方法,因为toString方法可能会返回一个更加用户友好的名称.此方法主要用于特殊情况,其中正确性取决于获取确切名称,该名称在不同版本之间不会有所不同.
我认为这里对“理想”一词的含义存在一些混淆。javadoc 基本上说了两次同样的事情:覆盖 toString() 通常不需要枚举工作,因此这样做没有用(可取)。
因此,回答您的问题:如果满足以下条件,则不需要重写toString():A)您知道您永远不必显示枚举名称的字符串表示形式,或者 B)默认字符串表示形式足以识别枚举是否需要这样做。