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