Come posso fare riferimento al mio Java Enum senza specificarne il tipo

Ho una class che definisce il proprio enume in questo modo:

public class Test { enum MyEnum{E1, E2}; public static void aTestMethod() { Test2(E1); // << Gives "E1 cannot be resolved" in eclipse. } public Test2(MyEnum e) {} } 

Se si specifica MyEnum.E1 funziona correttamente, ma mi piacerebbe davvero averlo come “E1”. Qualche idea su come posso farcela, o deve essere definita in un altro file perché funzioni?

CONCLUSIONE: non ero stato in grado di ottenere la syntax corretta per l’importazione. Dal momento che diverse risposte suggerivano che ciò era ansible, selezionerei quello che mi dava la syntax di cui avevo bisogno e che eleva gli altri.

A proposito, una parte VERAMENTE STRANA di questo (prima che l’importazione statica funzionasse), un’istruzione switch che avevo scritto che usava l’enum non permetteva che l’enum fosse prefissato dal suo tipo – tutto il resto del codice richiesto. Ferita la testa.

In realtà, puoi eseguire un’importazione statica di un enumerato nidificato. Il codice seguente compila bene:

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

È ansible eseguire un’importazione statica su una class nidificata:

 import static apackage.Test.Enum.*; 

La class di test deve essere definita in un pacchetto per essere importabile.

Con il pacchetto definito in Test ( IT WORKS ):

 package mypackage; 

Puoi usare:

 import static mypackage.Test.MyEnum.*; 

Senza il pacchetto definito, non è ansible utilizzare ( NON FUNZIONA ):

 import static Test.MyEnum.*;