Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java如何打开枚举?_Java_Switch Statement - Fatal编程技术网

Java如何打开枚举?

Java如何打开枚举?,java,switch-statement,Java,Switch Statement,我来自c#,发现java的switch语句有点混乱 只能打开字符,但可以打开枚举 这是因为它在内部切换值吗 为什么要将方法添加到枚举中?听起来问题背后的假设是错误的。您可以打开enum值、整数类型(char、int、byte等)或String实例 在内部,所有开关编译为两条指令之一,lookupswitch或tableswitch。这两个指令都要求每种情况都使用不同的整数进行标记。使用enum值时,将使用该值的“序号”。当使用String实例时,编译器会插入额外的代码以将每个字符串映射到唯一的值

我来自c#,发现java的switch语句有点混乱

只能打开字符,但可以打开枚举

这是因为它在内部切换值吗


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

听起来问题背后的假设是错误的。您可以打开
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之前)。