私はちょうどEnum#toString
javadoc状態(強調鉱山)ことに気づい:宣言に含まれているとして、この列挙型定数の名前を返しますEnum#をオーバーライドすることは望ましくありません。
。 このメソッドはオーバーライドできますが、通常はが必要ではなく、が望ましいではありません。より "プログラマフレンドリー"な文字列形式が存在する場合、enum型はこのメソッドをオーバーライドする必要があります。
デフォルトで
、toString()
とname()
同じものを返し、そうtoString
が上書きされていても一度、1はまだname()
方法で列挙型の名前にアクセスすることができます。
Enum#toString
を無効にするのが望ましいとは思わないのは誰ですか?
EDIT:参考のため、name()
のJavadocの(元のように重点):
が列挙宣言で宣言されたとおりに、この列挙定数の名前を返します。 ほとんどのプログラマは、toStringメソッドがよりわかりやすい名前を返す場合があるため、このメソッドよりもtoString()メソッドを優先して使用する必要があります。このメソッドは主に、正確な名前を取得することによって正確さが変わる特殊な状況で使用するように設計されています。名前はリリースごとに異なります。
列挙型の値をすべて大文字(たとえば、VALUE)にする必要があるという既存のコーディング規則がある場合に、それが望ましくない場合があります。 'name.toLowerCase()'や他のケースの操作を返すように実装されているかもしれません。 – jpm
私の使用例は、enumがユーザに表示されるオプションのセットを表すことです(例えば、 'JComboBox')。私の最初の勾配は、ユーザーにローカライズされた表示名を提供するために 'toString'をオーバーライドすることでしたが、javadocはより優れた「プログラマーフレンドリーな」文字列形式を得るためにオーバーライドのみを提案しました。 「ユーザーフレンドリーな」フォーム。しかし、 'name()'のjavadocのコメントは 'toString()'は* user *に親切な名前を返すように設計されているので、 'toString'のjavadocは同じ"ユーザーフレンドリー "代わりに。 –