作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个场景,其中我有 玩家类型 ARCHER
、WARRIOR
和 sorcerer
。
我应该在 Player 类中为玩家类型使用什么?
常量 final static String 变量还是 Enum?为什么?
请帮忙说明原因。
最佳答案
假设您使用常量字符串(或 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 中的枚举可以有更多与之相关的信息,也可以有行为。整体上好多了。
关于java - 为什么使用枚举而不是常量?在软件设计和可读性方面哪个更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11575376/
我是一名优秀的程序员,十分优秀!