Java Beans、BeanUtils 和 Boolean wrapper 类
2022-09-03 02:02:59
我正在使用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'
将所有内容更改为基元允许 set 和 get 调用都正常工作。但是,我没有此选项,因为这些是生成的类。我假设发生这种情况是因为Java Bean库只考虑一个方法来表示一个属性,如果返回类型是一个基元,而不是包装器类型。有没有人对如何通过BeanUtils访问这些属性有建议?我可以使用某种解决方法吗?boolean
is<name>
boolean
Boolean