Mam klasę, która definiuje własne wyliczenie w następujący sposób:
public class Test
{
enum MyEnum{E1, E2};
public static void aTestMethod() {
Test2(E1); // << Gives "E1 cannot be resolved" in eclipse.
}
public Test2(MyEnum e) {}
}
Jeśli podam MyEnum.E1, to działa dobrze, ale naprawdę chciałbym mieć to jako „E1”. Masz jakiś pomysł, jak mogę to osiągnąć, czy też trzeba to zdefiniować w innym pliku, aby to zadziałało?
WNIOSEK: nie udało mi się uzyskać poprawnej składni importu. Ponieważ kilka odpowiedzi sugerowało, że jest to możliwe, mam zamiar wybrać tę, która dała mi potrzebną składnię, i zagłosować za innymi.
Nawiasem mówiąc, NAPRAWDĘ DZIWNA część tego (przed uruchomieniem importu statycznego), napisana przeze mnie instrukcja przełączająca, która używała wyliczenia, nie pozwalała na przedrostek wyliczenia według jego typu - cała reszta kod wymagał tego. Zranić mnie w głowę.
switch
niespójności, sprawia, że mniej doświadczeni programiści Java drapią się po głowach.Odpowiedzi:
Właściwie możesz wykonać statyczny import zagnieżdżonego wyliczenia. Poniższy kod kompiluje się dobrze:
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) {} }
źródło
Możesz wykonać statyczny import zagnieżdżonej klasy:
import static apackage.Test.Enum.*;
źródło
Klasa Test musi być zdefiniowana w pakiecie, aby można było ją importować.
Z pakietem zdefiniowanym w
Test
( TO DZIAŁA ):package mypackage;
Możesz użyć:
import static mypackage.Test.MyEnum.*;
Bez zdefiniowanego pakietu nie możesz używać ( NIE DZIAŁA ):
import static Test.MyEnum.*;
źródło