我来自c#,发现java的switch语句有点令人困惑。
您只能打开一个角色,但您可以打开一个枚举。
这是因为它内部切换了值吗?
为什么要将方法添加到枚举中?
答案 0 :(得分:7)
听起来你的问题背后的假设是假的。您可以启用enum
值,整数类型(char
,int
,byte
等)或String
个实例。
在内部,所有开关都编译为两个指令lookupswitch
或tableswitch
之一。两条指令都要求每个案例都标有不同的整数。使用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也没有过度设计,使用枚举属性和方法可以产生良好的效果。