Comment faire pour appeler une méthode de lecture par son nom?
J'ai le texte suivant bean classe:
public class A{
private String field;
public String getField() {
return field;
}
private String setField(String field) {
this.field = field;
}
}
Et la classe suivante:
public class B{
public static void main(String[] args){
A a = new A();
//do stuff
String f = //get a's field value
}
}
Comment puis-je obtenir la valeur retournée par la lecture d'un objet particulier de class A
? Bien sûr, je peux appeler la méthode avec Method.invoke(Object obj, Object... args)
mais je ne voudrais pas écrire "get"
préfixe manuellement. Est-il possible de l'éviter?
Vous voudrez peut-être regarder à
Ressemble à ce que je suis à la recherche pour. Auriez-vous l'esprit de fournir une réponse complète?
Vérifier ce tutoriel
java.beans.Introspector
.Ressemble à ce que je suis à la recherche pour. Auriez-vous l'esprit de fournir une réponse complète?
Vérifier ce tutoriel
OriginalL'auteur user3663882 | 2015-02-24
Vous devez vous connecter pour publier un commentaire.
Comment sur l'utilisation de
java.beans.PropertyDescriptor
ou peu version longue (qui fait exactement la même que la précédente)
PropertyDescriptor
nous permet de faire beaucoup de choses, par exemple sagetReadMethod()
Afin que nous puissions obtenir de l'instance de
java.reflect.Method
représentant de lecture pourfield
. Tout ce que nous devons faire maintenant est d'suffit de l'appeler sur le haricot à partir de laquelle nous voulons obtenir de résultat.Lire la PropertyDescriptor documentation :
PropertyDescriptor(String propertyName, Class<?> beanClass)
Construit un PropertyDescriptor pour une propriété qui suit le standard Java convention en ayant getFoo et setFoo méthodes d'accès.Aura de la lecture être invoquée que si nous n'avons pas d'correspondante déposée et setter, juste
getField()
?Oui. Vous pouvez avoir readonly, writeonly, readwrite propriétés. Seules les méthodes sont nécessaires, vous ne pouvez pas avoir un champ associé.
Superbe exemple. Je me promenais partout pour trouver la solution simpliste. Cela m'a aidé à la dernière.
OriginalL'auteur Pshemo
Un autre moyen facile est d'utiliser la base de réflexion java.
Aussi simple que cela.
Cheers !!
OriginalL'auteur AnirbanDebnath