use*_*882 10 java methods getter
我有以下bean类:
public class A{
private String field;
public String getField() {
return field;
}
private String setField(String field) {
this.field = field;
}
}
Run Code Online (Sandbox Code Playgroud)
以下课程:
public class B{
public static void main(String[] args){
A a = new A();
//do stuff
String f = //get a's field value
}
}
Run Code Online (Sandbox Code Playgroud)
如何获取特定对象的getter返回的值class A?当然,我可以调用方法,Method.invoke(Object obj, Object... args)但我不想"get"手动编写前缀.有可能避免这种情况吗?
Psh*_*emo 43
如何使用 java.beans.PropertyDescriptor
Object f = new PropertyDescriptor("field", A.class).getReadMethod().invoke(a);
Run Code Online (Sandbox Code Playgroud)
或更长的版本(与前一版完全相同)
PropertyDescriptor pd = new PropertyDescriptor("field", A.class);
Method getter = pd.getReadMethod();
Object f = getter.invoke(a);
Run Code Online (Sandbox Code Playgroud)
PropertyDescriptor 允许我们做很多事情,例如它 getReadMethod()
获取应该用于读取属性值的方法.
所以我们可以得到java.reflect.Method代表getter的实例field.我们现在需要做的只是在我们想要获得结果的bean上调用它.
另一种简单的方法是使用基本的Java反射。
Method fieldGetter = A.getClass().getMethod("getField");
String f = fieldGetter.invoke(A).toString();
Run Code Online (Sandbox Code Playgroud)
就如此容易。干杯!
| 归档时间: |
|
| 查看次数: |
27985 次 |
| 最近记录: |