Java如何打开枚举?

时间:2012-01-05 17:38:37

标签: java switch-statement

我来自c#,发现java的switch语句有点令人困惑。

您只能打开一个角色,但您可以打开一个枚举。

这是因为它内部切换了值吗?

为什么要将方法添加到枚举中?

3 个答案:

答案 0 :(得分:7)

听起来你的问题背后的假设是假的。您可以启用enum值,整数类型(charintbyte等)或String个实例。

在内部,所有开关都编译为两个指令lookupswitchtableswitch之一。两条指令都要求每个案例都标有不同的整数。使用enum值时,将使用值的“序数”。使用String实例时,编译器会插入其他代码以将每个字符串映射到唯一值。其他类型直接使用。您可以阅读有关此in another answer.

的更多信息

enum上的方法与任何其他对象上的方法具有相同的用途。您可以使用它们来实现多态行为,或者作为简单的访问器,或者其他任何东西。

答案 1 :(得分:2)

关于“为什么要在枚举中添加方法?”
在c#中,枚举是一个带有一些语法糖的限制整数,在java中,枚举是一个实际的类。真的有不同。您可以将一个方法添加到枚举中,原因与将其添加到任何其他类的原因相同,以使其完成任务!例如,每次使用开关烤箱枚举时,您都可以在枚举上使用方法而不是切换,并且更加面向对象。如果你需要在多个地方切换相同的枚举,你可能会更好地使用方法
而不是做

switch(planet){
   case Mars: doWhatMarsDo();break;
   case Earth: doWhatEarthDo();break;
}

你可以写

planet.doYourThing();

答案 2 :(得分:1)

次要问题:因为有时枚举需要方法,比如获取属性,进行计算等等。枚举方法非常方便,可以播放一些有趣的游戏。

即使tutorial's example也没有过度设计,使用枚举属性和方法可以产生良好的效果。