Récupérer les valeurs de champ à l'aide de BeanUtils
Je veux extraire domaine privé des valeurs qui ne sont pas marqués par certaines annotations personnalisées, est-ce possible via BeanUtils? Si oui, comment?
Si vous n'êtes pas lié par BeanUtils en soi, voir aussi stackoverflow.com/questions/1196192/...
OriginalL'auteur TheLameProgrammer | 2011-05-25
Vous devez vous connecter pour publier un commentaire.
Oui, en supposant que vous connaissez les noms de champs. Vous pouvez utiliser
PropertyUtils.getSimpleProperty(...)
. Voir aussi ici pour un exemple.NoSuchMethodException
pour un champ sans un getter et unIllegalAccessException
s'il s'agit d'une lecture, mais il n'est pas accessible? Que faire si il n'y a pas de lecture publique?OriginalL'auteur MarcoS
Non, il n'est pas possible avec BeanUtils. Mais vous pouvez utiliser Java propres outils de réflexion comme ceci:
Veuillez considérer: l'Accès aux champs privés avec la réflexion est très mauvais style, et devrait être effectué uniquement pour les tests ou si vous êtes sûr qu'il n'y a pas d'autre chemin. Si vous n'avez pas la possibilité de modifier les sources de la classe à laquelle vous souhaitez accéder, il pourrait être un dernier recours. Mais nous considérons que le comportement peut changer dans le futur (par exemple, la mise à jour de la bibliothèque que vous utilisez) et de briser votre code.
Edit: Si BeanUtils ou PropertyUtils sont de travail, cela signifie qu'il existe un public de lecture pour cette propriété et vous devriez l'utiliser à la place de l'utilisation de la réflexion. À l'aide de PropertyUtils sur un domaine privé sans un getter publique lance un NoSuchMethodException.
OriginalL'auteur Stephan