J’ai créé un moyen d’obtenir des membres hérités via et accéder aux membres privés via
mais je cherche des champs hérités privés. Comment est-ce que je peux réaliser cela ?
Réponses
Trop de publicités?La meilleure approche ici est d'utiliser le Modèle Visiteur ne trouvez tous les champs de la classe et toutes les super-classes et d'exécuter un rappel de l'action.
La mise en œuvre
Le printemps est une belle classe Utilitaire ReflectionUtils
qui ne fait que cela: il définit une méthode pour faire une boucle sur tous les champs de toutes les super-classes avec un rappel: ReflectionUtils.doWithFields()
Documentation:
Invoquer le rappel sur tous les champs de la classe cible, en remontant la hiérarchie de classe pour obtenir de déclarer tous les domaines.
Paramètres:
- clazz - la classe cible à analyser
- fc - la fonction de rappel à appeler pour chaque champ
- ff - le filtre qui détermine les champs d'appliquer la fonction de rappel de
Exemple de code:
ReflectionUtils.doWithFields(RoleUnresolvedList.class,
new FieldCallback(){
@Override
public void doWith(final Field field) throws IllegalArgumentException,
IllegalAccessException{
System.out.println("Found field " + field + " in type "
+ field.getDeclaringClass());
}
},
new FieldFilter(){
@Override
public boolean matches(final Field field){
final int modifiers = field.getModifiers();
// no static fields please
return !Modifier.isStatic(modifiers);
}
});
Sortie:
Trouvé le terrain privé transitoire boolean javax.de la gestion.relation.RoleUnresolvedList.typeSafe dans le type de la classe javax.de la gestion.relation.RoleUnresolvedList
Trouvé le terrain privé transitoire boolean javax.de la gestion.relation.RoleUnresolvedList.salies de type de la classe javax.de la gestion.relation.RoleUnresolvedList
Trouvé le terrain privé transitoire java.lang.Object[] java.util.Liste de tableaux.elementData dans le type de classe java.util.ArrayList
Trouvé champ private int java.util.Liste de tableaux.la taille du type de la classe java.util.ArrayList
Trouve protégé du champ de transitoire int java.util.AbstractList.modCount dans le type de classe java.util.AbstractList