如何引用java枚举而不指定其类型

58wvjzkj  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(536)

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

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语句使用了enum,它不允许enum以其类型作为前缀——所有其他代码都需要它。伤了我的头。

fhity93d

fhity93d1#

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

import static apackage.Test.Enum.*;
zfycwa2u

zfycwa2u2#

测试类必须在可导入的包中定义。
中定义了包 Test (有效):

package mypackage;

您可以使用:

import static mypackage.Test.MyEnum.*;

如果未定义包,则无法使用(不起作用):

import static Test.MyEnum.*;
0s7z1bwu

0s7z1bwu3#

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

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

相关问题