Réflexion Java Beans Propriété de l'API
Est-il de toute façon standard pour accéder à Java Bean Propriété comme
class A {
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
Je peux donc accéder à cette java bean nom de la propriété à l'aide de la Réflexion de l'API, de sorte que lorsque je change la valeur de la propriété, les méthodes de getName et setName sont automatiquement appelée lorsque j'ai mis et d'obtenir des valeurs de cette propriété
Vous devez vous connecter pour publier un commentaire.
Ce que vous avez besoin est la BeanInfo /mécanisme d'Introspection (voir Bozho de réponse). Cependant, c'est l'enfer pour l'utiliser directement, de sorte que vous pouvez utiliser l'une des Bibliothèques qui offrent le bien-fondé d'accès. La plus connue est probablement Apache Commons /BeanUtils (un autre est le Printemps
BeanWrapper
abstraction)Exemple de code:
setName
méthode, c'est ce que vous devriez utiliser. Sinon, un haricot d'introspection qui rend la vie plus facile, car il peut réduire beaucoup de couplage. En outre, le coût de l'utilisation de l'introspection n'est pas trop élevé (à l'extérieur de la critique interne des boucles).Vous question est très claire, mais si je l'obtiens:
Oui. Le
java.beans
paquet a appeléCes
. Vous pourrez y lire les propriétés d'un bean.Vous pouvez trouver le désiré
PropertyDescriptor
par son nom et vous pouvez appelergetReadMethod().invoke(..)
J'ai essayé BeanUtils ainsi que PropertyDescriptors parce que je n'ai pas l'information sur la classe qui a été transmis à ma méthode. Je ne savais même pas que les types de données les propriétés passé et donc les valeurs de réglage est devenu difficile. Je sais que BeanUtils devrait faire la conversion automatiquement pour le bien et de le définir, mais il n'était pas de sauver les données pour moi. Donc finalement, j'ai dû compter sur le champs. Voici ce que j'ai fait:
J'ai fait un semblable cas de commutateur de convertir tous les types de propriété de types appropriés. Lors de l'extraction à partir de la page de, demande.getParameter(paramname) a toujours été le retour de la Chaîne de sorte que cette conversion a fonctionné pour moi. Toutes les meilleures options pour la conversion directe des données sera vraiment utile.