4
J'utiliseVérifiez si la superclasse est java.lang.Object
if (clazz.getSuperclass().getName() == "java.lang.Object")
Y at-il une meilleure façon?
J'utiliseVérifiez si la superclasse est java.lang.Object
if (clazz.getSuperclass().getName() == "java.lang.Object")
Y at-il une meilleure façon?
if (clazz.getSuperclass() == Object.class)
Il y a 2 problèmes avec l'implémentation d'origine:
getSuperclass
peuvent retourner null
et vous obtenez NPE lorsque vous appelez getName==
au lieu de equals
). Curieusement, cela peut fonctionner dans ce cas car la chaîne "java.lang.Object"
est probablement intériorisée.Que diriez-vous
if (clazz.getSuperclass().equals(java.lang.Object.class))
Cela peut dérégler NPE si clazz est primitive ou 'java.lang.Object'. Probablement 'Object.class.equals (clazz.getSuperclass())' est plus robuste. De plus, 'java.lang.Class' est l'une des classes où il est possible d'utiliser la comparaison d'identité. –
@Alexander, bon point, merci. Je n'étais pas vraiment sûr de l'identité de la comparaison, donc j'ai utilisé «d'égal à égal» - me faisant ainsi mordre dans l'autre jambe :-) –