我正在使用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访问此类属性?我可以使用某种解决方法吗?

最佳答案

终于,我找到了法律确认书:

来自JavaBeans规范。您确定没有遇到JAXB-131错误吗?

09-10 05:59
查看更多