Supposons que nous ayons un objet Class
. Nommez-le cls
.Valeurs de liste de l'énumération inconnue
Maintenant cls.isEnum()
retours true
Quelle joie !!! Pourrais-je avoir les valeurs listées? (Un sucre, pas de lait)
Supposons que nous ayons un objet Class
. Nommez-le cls
.Valeurs de liste de l'énumération inconnue
Maintenant cls.isEnum()
retours true
Quelle joie !!! Pourrais-je avoir les valeurs listées? (Un sucre, pas de lait)
getEnumConstants() une méthode de l'objet de classe retourne un tableau d'objets
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);
}
}
Prints:
A
B
C
D
Les principales suivantes:
GetEnumFields public class {
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]);
}
}
}
imprime:
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
Vous pouvez utiliser EnumSet.allOf(Class<E>)
, où <E extends Enum<E>>
Étant donné:
public static enum Alphabet {
A, B, C, D;
}
Vous pouvez écrire:
for (Enum<?> e : EnumSet.allOf(Alphabet.class)) {
System.out.println(e);
}
// A, B, C, D
Je ne peux pas l'utiliser sans accès à l'alphabet. Dites qu'il y a Class cls = Alphabet.class et travaillez uniquement avec cls. –
@Joel: contourner la vérification de type générique est difficile (je ne pense pas qu'il existe une façon de le faire si vous commencez avec un 'Class >'), mais je ne suis pas sûr de ce que vous dites. Cela fonctionne définitivement, mais 'Class.getEnumConstants()' est le meilleur. – polygenelubricants
Merci pour votre réponse. Je l'ai regardé, appris de lui et l'ai marqué utile. Comme vous le suggérez, j'ai accepté la réponse getEnumConstants(). La raison principale en est que cela ne nécessite rien d'autre que l'objet Class lui-même. –
+1; C'est la meilleure réponse! – polygenelubricants