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

2022-08-31 11:09:35

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

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语句不允许枚举以其类型为前缀 - 所有其他代码都需要它。伤到我的头。


答案 1

实际上,您可以对嵌套枚举执行静态导入。下面的代码编译良好:

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) {}
}

答案 2

您可以对嵌套类执行静态导入:

import static apackage.Test.Enum.*;