64 votes

Vérifier si une classe est java.lang.Enum

J'essaie de savoir si une classe est un énum, mais je pense qu'il me manque quelque chose:

 if (test.MyEnum.class instanceof Enum<?>.class)
 obj = resultWrapper.getEnum(i, test.MyEnum.class);
else 
 obj = resultWrapper.getObject(i);
 

Cela me donne une erreur en disant qu'Enum.class n'est pas valide. Alors, comment puis-je vérifier si une classe est un Enum? Je suis à peu près sûr qu'il est possible de déterminer cela, je suis simplement incapable de l'obtenir.

Merci

125voto

Sean Patrick Floyd Points 109428

La syntaxe correcte serait:

 Enum.class.isAssignableFrom(test.MyEnum.class)
 

mais pour les enums, voici une méthode plus pratique:

 if (someObject.getClass().isEnum()))
 

Mise à jour: pour les éléments enum avec un corps (par exemple, les méthodes de remplacement), cela ne fonctionnera pas réellement. Dans ce cas, utilisez

 if (someObject instanceof Enum<?>)
 

Référence:

14voto

Roman Points 21807

Si vous parlez de la nouvelle fonctionnalité de Java 5 - enum (ce n’est pas vraiment une nouveauté en fait), voici le chemin à parcourir:

 if (obj.getClass().isEnum()) {

...
}
 

Si Enum est votre classe personnalisée, vérifiez simplement que obj instanceof Enum .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X