我有一个类定义自己的枚举,如下所示:
public class Test
{
enum MyEnum{E1, E2};
public static void aTestMethod() {
Test2(E1); // << Gives "E1 cannot be resolved" in eclipse.
}
public Test2(MyEnum e) {}
}
Run Code Online (Sandbox Code Playgroud)
如果我指定MyEnum.E1它工作正常,但我真的只想把它作为"E1".知道如何实现这一目标,还是必须在另一个文件中定义才能实现这一目标?
结论:我无法获得导入正确的语法.由于有几个答案表明这是可能的,我将选择一个能够提供我所需语法的语言,并提升其他语法.
顺便说一句,这是一个REALLY STRANGE的一部分(在我让静态导入工作之前),我写的一个使用枚举的switch语句不允许enum以其类型为前缀 - 所有其余的代码需要它.伤了我的脑袋.
Pas*_*ent 125
实际上,您可以静态导入嵌套枚举.下面的代码编译正常:
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) {}
}
Run Code Online (Sandbox Code Playgroud)
Yis*_*hai 15
您可以在嵌套类上执行静态导入:
import static apackage.Test.Enum.*;
Run Code Online (Sandbox Code Playgroud)
Test 类必须在包中定义才能导入。
使用Test
(IT WORKS)中定义的包:
package mypackage;
Run Code Online (Sandbox Code Playgroud)
您可以使用:
import static mypackage.Test.MyEnum.*;
Run Code Online (Sandbox Code Playgroud)
没有定义包,你不能使用(不工作):
import static Test.MyEnum.*;
Run Code Online (Sandbox Code Playgroud)