Я использую 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? Есть ли какое-то обходное решение, которое я могу использовать?