У меня есть класс, который определяет собственное перечисление следующим образом:
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, который я написал, который использовал перечисление, не позволял перечислению иметь префикс по его типу - все остальное код требовал этого. Повредить мне голову.
switch
непоследовательности, которая заставляет менее опытных Java-программистов ломать голову.Ответы:
Фактически, вы можете выполнить статический импорт вложенного перечисления. Код ниже компилируется нормально:
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) {} }
источник
Вы можете выполнить статический импорт во вложенном классе:
import static apackage.Test.Enum.*;
источник
Класс Test должен быть определен в пакете, чтобы его можно было импортировать.
С пакетом, определенным в
Test
( ЭТО РАБОТАЕТ ):package mypackage;
Вы можете использовать:
import static mypackage.Test.MyEnum.*;
Без определенного пакета вы не можете использовать ( НЕ РАБОТАЕТ ):
import static Test.MyEnum.*;
источник