我有JAXB生成的Java Beans类,我不想手动更改:
public class Bar
{
protected Boolean foo;
public Boolean getFoo() {
return this.foo;
}
public void setFoo(final boolean value) {
this.foo = value;
}
}
我正试图以这种方式调查这个类(我需要getter和setter):
PropertyDescriptor[] propertyDescriptiors =
Introspector.getBeanInfo(Bar.class, Object.class).getPropertyDescriptors();
for (PropertyDescriptor descriptor : propertyDescriptiors)
{
System.out.println("read method: " + descriptor.getReadMethod());
System.out.println("write method: " + descriptor.getWriteMethod());
}
但它没有找到setter。
如果我将getFoo
更改为返回原始boolean
或setFoo
以接收Boolean
对象,则可以正常使用。
如何在不更改类型的情况下从此类获取getter和setter方法?
答案 0 :(得分:2)
您不能,检查员无法找到设置者,因为foo
类型为Boolean
,而不是boolean
。
您可以使用包装器
public class BarWrapper {
private Bar bar;
public Boolean getFoo() {
return this.bar.getFoo();
}
public void setFoo(final Boolean value) {
this.bar.setFoo(value);
}
}
然后检查包装器
Introspector.getBeanInfo(BarWrapper.class, Object.class).getPropertyDescriptors();