Ich versuche, alle ENUM-Werte einer bestimmten Enum-Klasse zur Laufzeit durchzuschleifen und zu drucken. Aber ich kann nur die den Werten zugeordneten Konstanten zurückgeben. Die meisten Lösungen verweisen auf die Verwendung von getEnumConstants(), values () oder valueOf(), aber ich konnte sie nicht wie gewünscht zum Laufen bringen.Numerischer Wert mit Reflektion erhalten
Die nächsten Fragen, die ich finden konnte, sind Get value of enum by reflection und how-to-get-all-enum-values-in-java, aber sie sind anscheinend unterschiedlich genug, dass die Lösungen nicht meinen Anforderungen entsprachen. Unten ist der Code, den ich versucht habe und die ENUM-Klasse, die erzeugt automatisch und unveränderlich:
Class cls = Class.forName("TestEnum");
for (Object obj : cls.getEnumConstants())
{
System.out.println(obj.toString()); //prints TEST___A (not TEST_1)
System.out.println(Enum.valueOf(cls, obj.toString())); //prints TEST___A (not TEST_1)
}
und die ENUM:
@XmlType(name = "TestEnum")
@XmlEnum
public enum TestEnum {
@XmlEnumValue("TEST_1")
TEST___A("TEST_1"),
@XmlEnumValue("TEST_2")
TEST___B("TEST_2");
private final String value;
TestEnum(String v) {
value = v;
}
public String value() {
return value;
}
public static TestEnum fromValue(String v) {
for (TestEnum c: TestEnum.values()) {
if (c.value.equals(v)) {
return c;
}
}
throw new IllegalArgumentException(v);
}
gewünschte Ausgabe:
TEST_1
TEST_2
tatsächliche Ausgang:
TEST___A
TEST___B
Vielleicht wäre das einfacher, wenn ich verstehe, was diese automatisch generierten Klassen machen und wofür sie sind?
Ich werde nicht die Enum Namen kennen, bis es Aus einer Konfigurationsdatei zur Laufzeit lesen. Es muss dynamisch sein. Das Programm erzeugt automatisch Enum-Optionen in über 50 verschiedenen Textfeldern, die mit den Optionen von 50 verschiedenen Enums verknüpft sind. – JavaBeast