我正在使用 BeanUtils 来操作通过 JAXB 创建的 Java 对象,并且遇到了一个有趣的问题。有时,JAXB 会像这样创建一个 Java 对象:
public class Bean {
protected Boolean happy;
public Boolean isHappy() {
return happy;
}
public void setHappy(Boolean happy) {
this.happy = happy;
}
}
以下代码可以正常工作:
Bean bean = new Bean();
BeanUtils.setProperty(bean, "happy", true);
但是,尝试happy
像这样获取属性:
Bean bean = new Bean();
BeanUtils.getProperty(bean, "happy");
导致此异常:
Exception in thread "main" java.lang.NoSuchMethodException: Property 'happy' has no getter method in class 'class Bean'
将所有内容更改为原语boolean
允许 set 和 get 调用工作。但是,我没有这个选项,因为这些是生成的类。我假设发生这种情况是因为 Java Bean 库仅is<name>
在返回类型是原始类型boolean
而不是包装类型时才考虑表示属性的方法Boolean
。有没有人建议如何通过 BeanUtils 访问这些属性?我可以使用某种解决方法吗?