前几天,我在用Java帮助一位朋友,他们在问有关Enums的问题。我解释了(类似)的C语法
enumeration Difficulty{
BEGINNER= 1;
PRO=5;
EXPERT = 11;
}
不是要走的路,Java语法是something(1);
让您构造一个接受int的构造函数,然后执行此操作,等等。
但是他们拦住了我,问:“如果我们使用构造函数等等,为什么要麻烦枚举,为什么不仅仅拥有一个新类呢?”
我无法回答。那么为什么在这种情况下为什么要使用枚举而不是类呢?
枚举受到严格限制。不能在指定值之外定义一个枚举值(而使用类可以调用new
以创建新值)。
至少大多数JVM也对枚举进行了严重的优化,并且还有一些新的类和语言功能可以利用枚举的紧凑性和速度。例如,创建了新类EnumSet
和EnumMap
,分别使用位集和数组来实现枚举键集或映射(这可能是那些抽象数据类型最快的实现)。
此外,枚举类型可以在switch
语句中使用。如果您使用的是Java1.7之前的版本,那么这是定制switch
语句的最佳选择(String
由于类型安全性,它可能仍优于使用值;错误地枚举枚举值会导致编译时错误,但是错误地字符串会导致错误。更加隐蔽的运行时错误-或更糟糕的是,您在真正盯着代码看错字之前是无法理解的逻辑错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句