为什么在Java中我们必须编写Enum.Val但只在switch中编写Val?

Ale*_*tin 4 java

我有,比方说,

private enum MyEnum { CONST1, CONST2 }
Run Code Online (Sandbox Code Playgroud)

我需要写

private MyEnum var = MyEnum.CONST1;
Run Code Online (Sandbox Code Playgroud)

但在开关中我会写

switch(var) {
case CONST1:
...
}
Run Code Online (Sandbox Code Playgroud)

为何如此区别?

Pau*_*cks 5

您不需要编写MyEnum.CONST1.您可以在其上使用静态导入,然后您可以在没有MyEnum的情况下引用CONST1.

提供开关结构是为了方便,因此它们使它尽可能方便,并且不需要枚举类型的名称.此外,更明显的是,您只能使用一个枚举的实例,并且不能执行此类操作:

switch (val) {
case MyEnum1.VAL1:
  // ...
break;
case MyEnum2.VAL1:
  // ...
}
Run Code Online (Sandbox Code Playgroud)