为什么使用枚举而不是常量?在软件设计和可读性方面哪个更好
我有一个场景,其中我有玩家类型,和。
在玩家类中,我应该为玩家类型使用什么?
常量最终静态字符串变量还是枚举?为什么?
请帮忙说明原因。ARCHER
WARRIOR
sorcerer
我有一个场景,其中我有玩家类型,和。
在玩家类中,我应该为玩家类型使用什么?
常量最终静态字符串变量还是枚举?为什么?
请帮忙说明原因。ARCHER
WARRIOR
sorcerer
假设您使用常量字符串(或值 - 它们也是如此):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;
如果您使用枚举,则最终将变为:
// 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 中的枚举可以包含与其关联的更多信息,并且还可以具有行为。各方面都好多了。
枚举将您限制为所需的输入集,而即使您使用常量字符串,您仍然可以使用不属于逻辑的其他字符串。
这有助于您不犯错误,在输入数据的同时输入域外的内容,并提高程序的可读性。
此外,如果需要,您始终可以将枚举用作字符串。这是一个参考。