[解決済み] Enum.name()`と`Enum.toString()`の違いは何ですか?[重複]です。
質問
のドキュメントを読んだ後
String java.lang.Enum.name()
を使うタイミングがよくわかりません。
名前()
を使用する場合と
toString()
.
この関数は、この enum 定数の名前を enum 宣言で宣言されたとおりに返します。ほとんどのプログラマは、このメソッドよりも toString メソッドを優先して使用すべきです。このメソッドは、主にリリースごとに異なることのない正確な名前を取得することが重要な特殊な状況で使用するために設計されています。
特に、ドキュメントでは
toString()
は、Java自身の
標準ロケーション
列挙では
name
というのは、ドキュメントではそうなっていないと思っていたのに。
public String getName() { return name(); }
さらに
Enum
を実装しています。
toString()
としています。
public String toString() {
return name;
}
で、ユーザー定義の列挙が上書きされる状況は考えられません。
toString()
だから
name()
と
toString()
はほぼ完全に同じです。
-
なぜ、ドキュメントを無視して、常に
name()
は良くないのでしょうか? -
リリースごとに異なることはない」という表現はどうでしょうか。名前が変わらないということは、次のことを意味するのでしょうか?
java.lang.Enum.toString()
となりますか?
どのように解決するのですか?
との主な違いは
name()
と
toString()
は、その
name()
は
final
メソッドなので、オーバーライドできません。そのため
toString()
と同じ値を返します。
name()
はデフォルトでそうなっていますが
toString()
はEnumのサブクラスでオーバーライドすることができます。
したがって、もし
フィールド名そのもの
を使用します。
name()
. もし
フィールドの値を文字列で表現したもの
を使用します。
toString()
.
例えば
public enum WeekDay {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY;
public String toString() {
return name().charAt(0) + name().substring(1).toLowerCase();
}
}
この例では
WeekDay.MONDAY.name()
は "MONDAY"を返します。
WeekDay.MONDAY.toString()
は "Monday"を返します。
WeekDay.valueOf(WeekDay.MONDAY.name())
リターン
WeekDay.MONDAY
しかし
WeekDay.valueOf(WeekDay.MONDAY.toString())
を投げます。
IllegalArgumentException
.
関連
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException: 1
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] Javaで数値を小数点以下n桁に丸める方法
-
[解決済み] wait()とsleep()の違いについて
-
[解決済み] JDKとJREの違いは何ですか?
-
[解決済み] Java enum - 名前の代わりにtoStringを使用する理由
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Javaで "UTF-8 "文字列リテラルを取得する場所はどこですか?
-
myeclipseでコンパイルするとAntエラーが発生する javaの例外が発生しました。
-
Spring Boot による HTTPS アクセスの設定
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
eclipseにプロジェクトをインポートした後、Editorにmain typeが含まれない問題
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
スレッド "main" で例外発生 java.net.BindException: アドレスは既に使用中です。NET_Bind
-
Java(1)仕上げの基本概念+eclipseのインストール構成
-
[解決済み】Java: enumが与えられた文字列を含むかどうかをチェックしますか?
-
[解決済み] Java enum - 名前の代わりにtoStringを使用する理由