我有一个类,它定义了自己的枚举:
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”。知道如何实现这一目标,还是必须在另一个文件中定义才能实现这一目标?
结论: 我无法获得导入正确的语法。由于有几个答案表明这是可能的,我将选择一个能够提供我需要的语法的语言,然后选择其他语法。
顺便说一句,这是一个REALLY STRANGE的一部分(在我让静态导入工作之前),我写的一个使用枚举的switch语句不允许enum以其类型为前缀 - 所有其余的代码需要它。伤了我的头。
答案 0 :(得分:116)
实际上,您可以执行static import嵌套枚举。下面的代码编译得很好:
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) {}
}
答案 1 :(得分:14)
您可以在嵌套类上执行静态导入:
import static apackage.Test.Enum.*;
答案 2 :(得分:4)
必须在要导入的包中定义Test类。
在Test
( IT WORKS )中定义了包:
package mypackage;
您可以使用:
import static mypackage.Test.MyEnum.*;
如果没有定义包,则不能使用(不工作):
import static Test.MyEnum.*;