Werte aus Enum Erst Zur Laufzeit Bekannt
Ich brauchen, um alle Werte aus einer enum, deren Typ erst zur Laufzeit bekannt. Ich habe kommen mit dem folgenden, aber würde gerne wissen, ob jemand weiß, einen besseren Weg:
enum TestEnum {
FOO,
BAR
}
Enum[] getValuesForEnum(Class type) {
try {
Method m = type.getMethod("values");
return (Enum[])m.invoke(null);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
Class testEnum = Class.forName("TestEnum");
getValuesForEnum(testEnum);
Dank!
- Vielen Dank an alle, die ich verpasst, dass auf die API!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die verfügbaren API statt:
Vom in der Javadoc:
Beachten Sie, dass ich drehte Ihre Methode in generischer zu machen, typesafe. Auf diese Weise müssen Sie keine downcasts, um die tatsächlichen enum-Werte aus dem array zurückgegeben. (Natürlich, dies macht die Methode so trivial, dass man es weglassen und rufen
type.getEnumConstants()
direkt 🙂Hier ist eine Variante von Kevin Stembridge Antwort bewahrt den Typ (Vermeidung von downcasts), während immer noch Schutz vor genannt wird, mit einem nicht-enum-Typ:
Verwende ich Typ.getEnumConstants().
Ich denke, das funktioniert: