Ich bin auf das Problem enum
gestoßen, dass ich, ohne den tatsächlichen Typ zu kennen, die möglichen Werte durchlaufen muss.
if (value instanceof Enum){
Enum enumValue = (Enum)value;
}
Irgendwelche Ideen, wie man aus enumValue seine möglichen Werte extrahiert?
getClass()
auf einemenum
Objekt möglicherweise ein Subtyp desenum
Typs selbst zurückgegeben wird (wenn beispielsweise dieenum
Konstante eine Methode aus demenum
Typ überschreibt ).getDeclaringClass()
Gibt denenum
Typ zurück, der diese Konstante deklariert hat. Dies ist das, was Sie hier wollen.Oder
quelle
YourEnumClass[] yourEnums = YourEnumClass.class.getEnumConstants();
löste mein Problem des Aufrufs von einer nicht statischen Methode.Enum
s sind genau wieClass
es darin, dass sie getippt sind. Ihr aktueller Code prüft nur, ob es sich um eine Aufzählung handelt, ohne anzugeben, zu welcher Art von Aufzählung er gehört.Da Sie den Typ der Aufzählung nicht angegeben haben, müssen Sie Reflection verwenden, um herauszufinden, wie die Liste der Aufzählungswerte lautet.
Sie können es so machen:
Dadurch wird ein Array von Enum-Objekten zurückgegeben, von denen jedes eine der verfügbaren Optionen ist.
quelle
Werte Methode der Aufzählung
enum.values () -Methode, die alle Enum-Instanzen zurückgibt.
http://javaexplorer03.blogspot.in/2015/10/name-and-values-method-of-enum.html
quelle
... oder MyEnum.values ()? Oder fehlt mir etwas?
quelle
Hier ist Role eine Aufzählung, die die folgenden Werte enthält [ADMIN, USER, OTHER].
quelle
Man kann auch das java.util.EnumSet so verwenden
quelle