[解決済み] なぜ定数ではなくEnumを使うのですか?ソフトウェア設計と可読性の観点からどちらが優れているか?
2023-05-11 17:51:09
質問
私はあるシナリオを持っています。
プレイヤータイプ
ARCHER
,
WARRIOR
そして
sorcerer
.
Playerクラスでプレイヤータイプは何を使えばいいのでしょうか?
定数
final static String
変数または
列挙型
?と、なぜ?
理由と一緒に助けてください。
どのように解決するのですか?
仮に定数文字列(
int
の値も同じです)。
// Constants for player types
public static final String ARCHER = "Archer";
public static final String WARRIOR = "Warrior";
// Constants for genders
public static final String MALE = "Male";
public static final String FEMALE = "Female";
のようにすると、データの型がよくわからなくなり、不正確なコードになる可能性があります。
String playerType = Constants.MALE;
enumを使うと、結局こうなります。
// Compile-time error - incompatible types!
PlayerType playerType = Gender.MALE;
同様に、列挙型は制限された値の集合を与えます。
String playerType = "Fred"; // Hang on, that's not one we know about...
対
PlayerType playerType = "Fred"; // Nope, that doesn't work. Bang!
さらに、Javaの列挙型はより多くの情報を関連付けることができ、また、動作を持つことができます。はるかに良いすべてのラウンド。
関連
-
[解決済み】Java:サブクラス下のenumでswitchステートメントを使用する
-
[解決済み] Javaで "UTF-8 "文字列リテラルを取得する場所はどこですか?
-
セミコロン期待値エラー解決
-
Javaがリソースリークに遭遇した:'input'が閉じない 解決方法
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] なぜゲッターとセッター/アクセッサーを使うのですか?
-
[解決済み] 静的メソッドを使用する場合
-
[解決済み] なぜJavaのVector(およびStack)クラスは時代遅れ、または非推奨とされているのですか?
-
[解決済み] enumとは何か、なぜ有用なのか?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
配列定数は初期化子でのみ使用可能です。
-
Java appears タイプEを囲むインスタンスがアクセスできない。
-
JNIエンカウンターエラー:構造体またはユニオンではない何かでメンバー 'FindClass' のリクエスト
-
Server Tomcat v9.0 Server at localhost の起動に失敗しました。
-
代入の左辺は変数でなければならない 解答
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
[解決済み】文字列のenumを作成するための最良の方法?
-
[解決済み] 列挙型と定数型。いつ、どちらを使う?
-
[解決済み] Androidでenumを使うのは避けた方が良いですか?