java - 为什么使用枚举而不是常量?在软件设计和可读性方面哪个更好

标签 java android enums

我有一个场景,其中我有 玩家类型 ARCHERWARRIORsorcerer
我应该在 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/

相关文章:

java - 如何检查一个字符是否等于java中的双引号

java - 如何禁用 <HTML :submit> button without disabling the associated form?

java - 如何在将图像上传到 Firebase 之前调整图像大小?

android - 推送通知中的深层链接问题

C++ 如何获得 sizeof(enum) == sizeof(char)?

java - 如何使用 Twilio REST API 将 DateSent 过滤器设置为 Java 中的 getMessages

Java 线程无法正确运行

android - 使用 RxJava 和 Retrofit 2 登录成功后做一些事情

Java,生成选定的枚举值列表

c# - 后台 worker 可以有一个通用的方法吗?