Angenommen, wir haben ein Class
Objekt. Nennen Sie es cls
.Werte von unbekanntem Enum auflisten
Jetzt cls.isEnum()
kehrt true
Was für eine Freude !!! Könnte ich bitte die Werte für mich aufgelistet haben? (Ein Zucker, keine Milch)
Angenommen, wir haben ein Class
Objekt. Nennen Sie es cls
.Werte von unbekanntem Enum auflisten
Jetzt cls.isEnum()
kehrt true
Was für eine Freude !!! Könnte ich bitte die Werte für mich aufgelistet haben? (Ein Zucker, keine Milch)
getEnumConstants() ein Verfahren des Class-Objekt ein Array von Objekten
public static enum E {
A, B, C, D;
}
public static void main(String[] args) {
Class c = E.class;
for(Object b:c.getEnumConstants())
{
System.out.println(b);
}
}
Drucke zurück:
A
B
C
D
Folgende Haupt:
public class GetEnumFields {
public static enum Enum {
A, B, C, D;
}
public static void main(String[] args) {
Enum a = Enum.A;
Field[] declaredFields = a.getClass().getDeclaredFields();
for (int i = 0; i < declaredFields.length; i++) {
System.out.println(declaredFields[i]);
}
}
}
druckt:
public static final GetEnumFields$Enum GetEnumFields$Enum.A
public static final GetEnumFields$Enum GetEnumFields$Enum.B
public static final GetEnumFields$Enum GetEnumFields$Enum.C
public static final GetEnumFields$Enum GetEnumFields$Enum.D
private static final GetEnumFields$Enum[] GetEnumFields$Enum.ENUM$VALUES
Sie EnumSet.allOf(Class<E>)
verwenden können, wo <E extends Enum<E>>
Gegeben:
public static enum Alphabet {
A, B, C, D;
}
Sie schreiben:
for (Enum<?> e : EnumSet.allOf(Alphabet.class)) {
System.out.println(e);
}
// A, B, C, D
ich es nicht ohne Zugriff auf Alphabet verwenden können. Sagen wir, es gibt Klasse cls = Alphabet.class und arbeite nur mit cls. –
@Joel: Die generische Typprüfung zu umgehen ist knifflig (ich glaube nicht, dass es eine typsichere Methode gibt, wenn man mit einer 'Klasse >' beginnt), aber ich bin mir nicht sicher, was du sagst. Dies funktioniert definitiv, aber 'Class.getEnumConstants()' ist am besten. – polygenelubricants
Danke für Ihre Antwort. Ich schaute es an, lernte daraus und markierte es als nützlich. Wie Sie vorschlagen, habe ich die Antwort getEnumConstants() akzeptiert. Der Hauptgrund dafür ist, dass es nichts anderes als das Klassenobjekt selbst benötigt. –
+1; Das ist die beste Antwort! – polygenelubricants