Java如何打开枚举?

cod*_*ing 1 java switch-statement

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

您只能打开一个字符,但您可以打开一个枚举.

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

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

eri*_*son 7

听起来你的问题背后的假设是错误的.可以接通enum值,整数类型(char,int,byte等),或String实例.

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

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

  • 仅在Java 7或更高版本中的字符串实例! (4认同)