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