Подтвердить что ты не робот

Как я могу ссылаться на свой Java Enum без указания его типа

У меня есть класс, который определяет его собственное перечисление следующим образом:

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, который я написал, который использовал перечисление, не позволял перечислению быть префиксом по типу - все остальная часть кода требовала его. Повесите голову.

4b9b3361

Ответ 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.*;

Ответ 3

Класс Test должен быть определен в пакете для импорта.

С пакетом, определенным в Test (IT WORKS):

package mypackage;

Вы можете использовать:

import static mypackage.Test.MyEnum.*;

Без определенного пакета вы не можете использовать (НЕ РАБОТАЕТ):

import static Test.MyEnum.*;