J'essaie de savoir si une classe est un Enum, mais je pense que je manque quelque chose:Vérification si une classe est java.lang.Enum
if (test.MyEnum.class instanceof Enum<?>.class)
obj = resultWrapper.getEnum(i, test.MyEnum.class);
else
obj = resultWrapper.getObject(i);
Il me donne une erreur disant que Enum .class n'est pas valide. Alors, comment puis-je vérifier si un cours est un Enum? Je suis assez sûr qu'il est possible de déterminer cela, je suis juste incapable de l'obtenir.
Merci
Prenez garde de 'isEnum()'. Il renvoie false si votre classe est une classe anonyme créée par l'une des valeurs enum remplaçant une méthode. – Trejkaz
@Trejkaz pourriez-vous élaborer à ce sujet? Je ne vous suis pas vraiment –
Si vous avez des méthodes dans votre énumération, les valeurs individuelles de l'énumération peuvent les remplacer. Si vous remplacez l'une de ces méthodes, elle crée une classe anonyme qui est une sous-classe de l'énumération. isEnum() pour cette classe renvoie false. Ainsi, même si EnumClass.class.isEnum() renvoie la valeur true, EnumClass.SOME_VALUE.getClass(). IsEnum() peut renvoyer false, vous devez donc faire attention à l'endroit où vous obtenez la classe. Par exemple, si vous étiez en train d'écrire une méthode utilitaire pour les autres, appeler isEnum() serait une mauvaise idée et utiliser Enum.class.isAssignableFrom (clazz) serait plus sûr. – Trejkaz