Java Beans, BeanUtils и класс-оболочка Boolean

Я использую BeanUtils для управления объектами Java, созданными с помощью JAXB, и столкнулся с интересной проблемой. Иногда 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'

Изменение всего на примитивное логическое позволяет как установить, так и получить вызов. Однако у меня нет этой опции, поскольку это сгенерированные классы. Я предполагаю, что это происходит потому, что библиотеки Java Bean рассматривают только метод is для представления свойства, если тип возвращаемого значения является примитивным логическим , а не типом оболочки Булево . Есть ли у кого-нибудь предложение о том, как получить доступ к таким свойствам через BeanUtils? Есть ли какое-то обходное решение, которое я могу использовать?

13
задан skaffman 18 May 2012 в 13:20
поделиться