我有以下 bean 类:
public class A{
private String field;
public String getField() {
return field;
}
private String setField(String field) {
this.field = field;
}
}
还有下面的类:
public class B{
public static void main(String[] args){
A a = new A();
//do stuff
String f = //get a's field value
}
}
如何获取 class A
的特定对象的 getter 返回值?当然,我可以使用 Method.invoke(Object obj, Object... args)
调用方法,但我不想手动编写 "get"
前缀。有没有可能避免这种情况?
最佳答案
如何使用 java.beans.PropertyDescriptor
Object f = new PropertyDescriptor("field", A.class).getReadMethod().invoke(a);
或稍长一点的版本(与之前的版本完全相同)
PropertyDescriptor pd = new PropertyDescriptor("field", A.class);
Method getter = pd.getReadMethod();
Object f = getter.invoke(a);
PropertyDescriptor
允许我们做很多事情,例如它的 getReadMethod()
Gets the method that should be used to read the property value.
因此我们可以获得代表 field
getter 的 java.reflect.Method
实例。我们现在需要做的就是简单地在我们想要从中获取结果的 bean 上调用它。
关于java - 如何通过名称调用 getter 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28697484/