У меня есть этот простой класс Bean и попробуйте установить некоторые значения с помощью функции BeanUtils.setProperty. Кажется, что String работает отлично, но когда я пытаюсь установить логическое значение, это просто не работает. Я пробовал и определял поле как общедоступное, но все еще не работающее. Любая помощь? Почему это не работает?BeanUtils.setProperty не работает для булевых значений?
public class TestBean {
protected Boolean someBoolean;
protected String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isSomeBoolean() {
if (someBoolean == null) {
return true;
} else {
return someBoolean;
}
}
public void setSomeBoolean(Boolean value) {
this.someBoolean = value;
}
public static void main(String[] args) {
TestBean o = new TestBean();
Boolean b = new Boolean(false);
BeanUtils.setProperty(o, "someBoolean", b);
BeanUtils.setProperty(o, "name", "A name");
System.out.println(((TestBean)o).isSomeBoolean());
// Output = true WHY?????
System.out.println(((TestBean)o).getName());
// Output = A name
BeanUtils.setProperty(o, "someBoolean", false);
BeanUtils.setProperty(o, "name", "Another name");
System.out.println(((TestBean)o).isSomeBoolean());
// Output = true WHY????
System.out.println(((TestBean)o).getName());
// Output = Another name
}
}
Почему вы постоянно произнося 'O' в' TestBean' когда это он объявлен тип? –
Извините, это просто что-то, что осталось от более сложного кода, где я не знаю точного класса объекта. Я создаю экземпляр следующим образом: Object o = class.newInstance(); – Ziggurat