BeanUtils1.8でBeanUtilsクラスを使ってオブジェクトをまるごとコピー

感想おまちしてます!

Beanの操作に役立つユーティリティクラスを提供する。

依存するライブラリは以下の2つ。

  • Collections Package (Apache Commons), version 1.0 or later
  • Logging Package (Apache Commons), version 1.0 or later

JavaBeanのプロパティのためにリフレクションを使ったユーティリティメソッドを提供する。

スポンサーリンク

BeanUtilsクラス

実装はBeanUtilsBeanクラスによって提供される。これらのStaticなユーティリティメソッドは、デフォルトのインスタンスで使う。BeanUtilsBeanクラスのインスタンスを使うことによって、より高度な動作が提供される。

APIを見る限りString型のアクセッサを持ったBeanの操作が得意に見えた。オブジェクト型のアクセッサは「PropertyUtils」というほうを使ったほうがいいかも。

copyProperties

コピー元Beanからコピー先Beanへ同じ名前のプロパティーをコピーする。詳細はBeanUtilsBeanを参照のこと。

//RedVOからRedChildVOにコピー
try{
BeanUtils.copyProperties(childVO, redVO);
}catch(IllegalAccessException iae){
//アクセッサにアクセスできない場合

}catch(InvocationTargetException ite){
//アクセッサメソッドが例外を投げた場合
}

copyProperty

必要である型変換をおこなって、特定のプロパティを特定のBeanのプロパティにコピーする。以下の場合ではgetListメソッドに新しいArrayListをコピーしている。

try{
BeanUtils.copyProperty(childVO, "list", new ArrayList());
}catch(IllegalAccessException e){

}catch(InvocationTargetException e){

}


PropertyUtilsクラス

JavaのリフレクションAPIを使った、一般的なオブジェクトをやり取りするアクセッサの手助けをするユーティリティメソッドを提供する。詳細はPropertyUtilsBeanを。

copyProperties

コピー元のBeanからコピー先のBeanへ同じ名前のプロパティをコピーする。(実際のアクセッサがBeanInfoのクラスを通してカスタム設計されたかもしれない)