如何在不指定类型的情况下引用我的Java Enum

时间:2009-11-04 22:13:04

标签: java enums

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

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以其类型为前缀 - 所有其余的代码需要它。伤了我的头。

3 个答案:

答案 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.*;