Y a-t-il un moyen de trouver si un champ est booléen code> dans la réflexion Java de la même manière que
isrdimitive () code>?
Field fieldlist[] = clazz.getDeclaredFields();
for (int i = 0; fieldlist.length & gt; i; i++) {
Field fld = fieldlist[i];
if (fld.getClass().isPrimitive()) {
fld.setInt(object, 0);
continue;
}
}
4 Réponses :
Je pense que boolean.class.isAssignAlleFrom (fld.getclass ()) code> peut être utilisé pour déterminer si le champ est un booléen. Je n'ai pas eu la chance de tester si cela fonctionne pour les primitives. P>
Cela ne devrait pas travailler pour les booléens primitifs. Si vous utilisez le printemps, vous pouvez appeler clasutils.isAssignible (boolean.class, fld.getclass ()), cependant, et cela devrait fonctionner si FLD est booléen ou booléen.
THOR84NO: J'ai obtenu cette erreur en faisant cela: la méthode isAssignableDrom (classe >) Dans la classe de type
Dan Robinson: Classutils n'a pas aidé non plus: la méthode isassignable (classe >, Classe >) Dans le type Classutils n'est pas applicable pour les arguments (classe
Je crois qu'il devrait y avoir un boolean.class code> qui couvre les primitives (de Java 6 en avant, je pense). Vous pouvez combiner les deux
boolean.class.isAssignAdFrom (fld.getclass ()) || boolean.class.isAssignAlleFrom (fld.getclass ()) code>. Je n'ai pas de guichet automatique pratique IDE.
if(fld.getType().equals(boolean.class)) Just tested this and it works for primitive boolean variables.
Ceci est pour la primitive et l'objet: