[解決済み】Enum値をStringリテラルとして使用する場合
2022-03-24 07:20:44
質問
Enumに格納された値をStringリテラルとして使用する最も良い方法は何ですか? 例えば
public enum Modes {
some-really-long-string,
mode1,
mode2,
mode3
}
そして、後で
Mode.mode1
という文字列表現を返します。
mode1
. を何度も呼び出すことなく
Mode.mode1.toString()
.
解決方法は?
無理です。ここには4つの選択肢があると思います。4つとも解決策を提示していますが、少し違ったアプローチで...。
オプション1
を使用します。
name()
を列挙しています。特別な命名形式を必要としないのであれば、これは全く問題ないでしょう。
String name = Modes.mode1.name(); // Returns the name of this enum constant, exactly as declared in its enum declaration.
オプション2 もっと制御したい場合は、enumにオーバーライドプロパティを追加します。
public enum Modes {
mode1 ("Fancy Mode 1"),
mode2 ("Fancy Mode 2"),
mode3 ("Fancy Mode 3");
private final String name;
private Modes(String s) {
name = s;
}
public boolean equalsName(String otherName) {
// (otherName == null) check is not needed because name.equals(null) returns false
return name.equals(otherName);
}
public String toString() {
return this.name;
}
}
オプション3 enumの代わりにstatic finalsを使用します。
public final class Modes {
public static final String MODE_1 = "Fancy Mode 1";
public static final String MODE_2 = "Fancy Mode 2";
public static final String MODE_3 = "Fancy Mode 3";
private Modes() { }
}
オプション4 インターフェースは、すべてのフィールドが public、static、final である。
public interface Modes {
String MODE_1 = "Fancy Mode 1";
String MODE_2 = "Fancy Mode 2";
String MODE_3 = "Fancy Mode 3";
}
関連
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] raw 型のメンバへのアンチェックの呼び出し
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] enumを列挙するには
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] maven. -source 1.5ではラムダ式がサポートされていません。
-
[解決済み] java.lang.IncompatibleClassChangeError: Mongo クラスを実装しています。
-
[解決済み] 警告: コンテキスト初期化中に例外が発生 - 更新の試みはキャンセルされました。
-
[解決済み] javacが「using unchecked or unsafe operations」という警告を出す原因は何ですか?
-
[解決済み] double 型を Int 型に変換、切り捨て
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] ORA-01654: インデックスを拡張できません。
-
[解決済み] JavaにおけるMouseListenerとMouseAdapterの違いについて
-
[解決済み] Java の文字列インデックスが範囲外です。0 [閉店]
-
[解決済み] SubclipseとJavaHLのインストールで頭を悩ます