1. ホーム
  2. java

[解決済み] なぜ定数ではなく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の列挙型はより多くの情報を関連付けることができ、また、動作を持つことができます。はるかに良いすべてのラウンド。