Java如何打开枚举?
我来自c#,发现java的switch语句有点混乱 只能打开字符,但可以打开枚举 这是因为它在内部切换值吗Java如何打开枚举?,java,switch-statement,Java,Switch Statement,我来自c#,发现java的switch语句有点混乱 只能打开字符,但可以打开枚举 这是因为它在内部切换值吗 为什么要将方法添加到枚举中?听起来问题背后的假设是错误的。您可以打开enum值、整数类型(char、int、byte等)或String实例 在内部,所有开关编译为两条指令之一,lookupswitch或tableswitch。这两个指令都要求每种情况都使用不同的整数进行标记。使用enum值时,将使用该值的“序号”。当使用String实例时,编译器会插入额外的代码以将每个字符串映射到唯一的值
为什么要将方法添加到枚举中?听起来问题背后的假设是错误的。您可以打开
enum
值、整数类型(char
、int
、byte
等)或String
实例
在内部,所有开关编译为两条指令之一,lookupswitch
或tableswitch
。这两个指令都要求每种情况都使用不同的整数进行标记。使用enum
值时,将使用该值的“序号”。当使用String
实例时,编译器会插入额外的代码以将每个字符串映射到唯一的值。其他类型直接使用。你可以阅读更多关于这方面的内容
enum
上的方法与任何其他对象上的方法具有相同的用途。您可以使用它们来实现多态行为,或者作为简单的访问器,或者其他任何东西。听起来您的问题背后的假设是错误的。您可以打开enum
值、整数类型(char
、int
、byte
等)或String
实例
在内部,所有开关编译为两条指令之一,lookupswitch
或tableswitch
。这两个指令都要求每种情况都使用不同的整数进行标记。使用enum
值时,将使用该值的“序号”。当使用String
实例时,编译器会插入额外的代码以将每个字符串映射到唯一的值。其他类型直接使用。你可以阅读更多关于这方面的内容
enum
上的方法与任何其他对象上的方法具有相同的用途。您可以使用它们来实现多态行为,或者作为简单的访问器,或者其他任何东西。第二个问题:因为有时候枚举需要方法,比如获取属性、进行计算等。枚举方法非常方便,可以玩一些有趣的游戏
即使使用枚举属性和方法也不过分做作。第二个问题:因为有时候枚举需要方法,比如获取属性、进行计算等。枚举方法非常方便,可以玩一些有趣的游戏 即使使用枚举属性和方法,也不会过于做作。关于“为什么要向枚举添加方法?”
在c#中,枚举是一个带一些语法糖的受限整数,在java中,枚举是一个实际的类。真的有不同。您可以将一个方法添加到枚举中,其原因与将其添加到任何其他类中的原因相同,以使其能够完成任务!例如,每次在枚举中使用开关时,都可以在枚举中使用方法而不是开关,并且更加面向对象。如果需要在多个位置切换同一个枚举,则最好使用方法
而不是做
switch(planet){
case Mars: doWhatMarsDo();break;
case Earth: doWhatEarthDo();break;
}
你可以写
planet.doYourThing();
关于“为什么要向枚举添加方法?”在c#中,枚举是一个带一些语法糖的受限整数,在java中,枚举是一个实际的类。真的有不同。您可以将一个方法添加到枚举中,其原因与将其添加到任何其他类中的原因相同,以使其能够完成任务!例如,每次在枚举中使用开关时,都可以在枚举中使用方法而不是开关,并且更加面向对象。如果需要在多个位置切换同一个枚举,则最好使用方法
而不是做
switch(planet){
case Mars: doWhatMarsDo();break;
case Earth: doWhatEarthDo();break;
}
你可以写
planet.doYourThing();
'您只能打开一个字符'——还是一个整数?还是一根绳子?嗯?switch语句与C#和Java中的“只能在一个字符上切换”——或者是一个整数——非常相似?还是一根绳子?嗯?switch语句在C#和JavaString实例中非常相似,只有在java7或更高版本中才如此!和
enum
值仅在Java5或更高版本中!好的,所以开关中没有字符串,这可能就是我所指的(在pre 7中)。字符串实例仅在Java 7或更高版本中!和enum
值仅在Java5或更高版本中!好的,所以开关中没有字符串,这可能就是我所指的(在7之前)。