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>
がプロパティを表すメソッドを考慮するためであると考えられます。BeanUtils を介してこれらのようなプロパティにアクセスする方法について、誰か提案がありますか? 使用できる回避策はありますか?boolean
Boolean