11
votes

Existe-t-il un moyen de trouver si un champ est booléen de la même manière que l'ISPRIMITIVE ()?

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;
 }
}


0 commentaires

4 Réponses :


2
votes

Je pense que boolean.class.isAssignAlleFrom (fld.getclass ()) 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.


4 commentaires

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 n'est pas applicable pour les arguments (booléen)


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 Boolean)


Je crois qu'il devrait y avoir un boolean.class 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 ()) . Je n'ai pas de guichet automatique pratique IDE.



1
votes

Essayez ceci ( référence ): xxx


0 commentaires

32
votes
if(fld.getType().equals(boolean.class))
Just tested this and it works for primitive boolean variables.

0 commentaires

0
votes

Ceci est pour la primitive et l'objet: xxx


0 commentaires