如何在不指定类型的情况下引用 JavaEnum

我有一个类,它定义自己的枚举如下:

public class Test
{
enum MyEnum{E1, E2};


public static void aTestMethod() {
Test2(E1);  // << Gives "E1 cannot be resolved" in eclipse.
}
public Test2(MyEnum e) {}
}

如果我指定 MyEnum.E1,那么它可以正常工作,但是我真的希望它是“ E1”。有什么办法可以实现这一点,或者它必须在另一个文件中定义这个工作?

结论: 我无法得到正确的导入语法。由于有几个答案表明这是可能的,所以我将选择那个给出我所需语法的答案,并对其他答案进行表决。

顺便说一下,这里有一个非常奇怪的地方(在静态导入工作之前) ,我写的一个 switch 语句使用了枚举,它不允许枚举以它的类型作为前缀——所有其他代码都需要它。我的头受伤了。

79875 次浏览

Actually, you can do a static import of a nested enum. The code below compiles fine:

package mypackage;


import static mypackage.Test.MyEnum.*;


public class Test
{
enum MyEnum{E1, E2};


public static void aTestMethod() {
Test2(E1);
}


public static void Test2(MyEnum e) {}
}

You can do a static import on a nested class:

import static apackage.Test.Enum.*;

The Test class has to be defined in a package to be importable.

With package defined in Test (IT WORKS):

package mypackage;

You can use:

import static mypackage.Test.MyEnum.*;

Without package defined, you cannot use (DOES NOT WORK):

import static Test.MyEnum.*;