Enum#toString
javadocに次のように記載されていることに気付きました(強調は私のものです):
宣言に含まれる、この列挙型定数の名前を返します。このメソッドはオーバーライドできますが、通常は不要または望ましくありません。より「プログラマーに適した」文字列形式が存在する場合、列挙型はこのメソッドをオーバーライドする必要があります。
デフォルトでは、同じものtoString()
をname()
返すため、toString
オーバーライドされた後でも、name()
メソッドを介して列挙型の名前にアクセスできます。
Enum#toString
オーバーライドが望ましくない理由を誰かが知っていますか?
編集:参考までに、name()
のjavadoc(元の強調):
enum 宣言で宣言されているとおりに、この enum 定数の名前を返します。ほとんどのプログラマーは、toString() メソッドがよりユーザーフレンドリーな名前を返す可能性があるため、これよりも toString() メソッドを使用する必要があります。このメソッドは主に、リリースごとに異なることのない正確な名前の取得に依存する特殊な状況で使用するために設計されています。