我有一个场景,其中我有玩家类型ARCHER
,WARRIOR
,和sorcer
对于玩家类型,我应该在玩家类中使用什么
常量final static字符串变量还是枚举?为什么<请说明原因。
除了不允许您提供不正确的值之外,枚举的另一个特性可能看起来很小,但在我看来非常重要。现代IDE可以自动建议枚举的值,而没有办法可靠地推断字符串常量的可能值(Intellij IDEA做后者,但仅适用于JDK类和流行库)。当您正在探索一个新的API时,这尤其有帮助。
ENums将你限制在所需的输入集合,而即使你使用常量字符串,你仍然可以使用其他字符串,而不是你逻辑的一部分。
这有助于你不犯错误,输入域外的东西,同时输入数据,也提高了程序的可读性。
此外,如果您愿意,您可以随时将枚举用作字符串。这里有一个参考。
假设您使用常量字符串(或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...
vs.
PlayerType playerType = "Fred"; // Nope, that doesn't work. Bang!
此外,Java中的枚举可以有更多的相关信息,也可以有行为。一切都好得多。
问题内容: 在Java 5及更高版本中,您具有foreach循环,该循环可以神奇地实现任何实现的对象: 但是,仍然没有实现,这意味着要迭代一个,您必须执行以下操作: 有谁知道为什么仍然不执行? 编辑: 为澄清起见,我不是在谈论枚举的语言概念,而是在Java API中称为“ 枚举 ” 的Java特定类。 问题答案: 枚举没有被修改为支持Iterable,因为它是一个接口,而不是一个具体的类(例如Ve
包中的collections.list()方法返回而不是有充分的理由吗?
枚举(enum)是定义一组命名常量的机制,用这种方式定义的常量被称作枚举常量 注:枚举常量的数据类型是整数 使用方法: 下面我们以文本语音转换为例子,说明一下枚举常量的使用方法。 首先我们在窗体上放入语音识别控件,按钮,通用对话框这些基本控件,来制作一个简单的语音文本朗读程序。 1 如果您使用过语音识别控件,就应该知道,使用这个控件的第一步就是先创建它,而创建命令的两个参数就是枚举常量,我们可以看
问题内容: 在Java <1.5中,常量将像这样实现 并且您可以像这样使用它: 现在,显然在1.5中,您应该使用枚举: 现在您可以像这样使用它: 我觉得有点难看。现在,我可以轻松添加几个静态变量: 现在,我可以再次执行此操作: 具有枚举的所有类型安全性。 这是好风格还是坏风格?您能想到更好的解决方案吗? 更新资料 Vilx-是第一个强调我所缺少的东西的人-枚举应该是一等公民。在Java中,这意味着
主要内容:声明常量,实例,VB.Net打印和显示常量,声明枚举,实例常量指的是程序在执行过程中可能不会改变的固定值。 这些固定值也被称为文字。 常量可以是任何基本数据类型,如整数常量,浮点常量,字符常量或字符串文字。 也有枚举常量。 常量的处理方式与常规变量一样,只是它们的值在定义之后无法修改。 枚举是一组命名的整数常量。 声明常量 在VB.Net中,使用语句声明常量。 语句用于模块,类,结构,过程或块级别,以代替文字值。 语句的语法是: 其中, attribut