主旨
業務で
org.seasar.framework.beans.util.Beans#copy
を使うことがたまにあります。
便利なのですが、頻繁には使わないので、使うたびに以下に2点が不安になります。
- コピー元にはあって、コピー先にないプロパティがあるとエラーになる?
- コピー元になくて、コピー先にあるプロパティがあるとエラーになる?
Javadocもこんな感じで上記のことについては書いていないので、テストしてみました。
結論
- いずれもエラーにはならない。
- コピー元になくてコピー先にあるプロパティは、影響を受けない(事前に代入された値のまま)。
実行したコード
import org.seasar.framework.beans.util.Beans;
public class BeansTest {
/** コピー元のクラス */
public static class Src {
public String name;
public String hobby; // Destにないプロパティ
}
/** コピー先のクラス */
public static class Dest {
public String name;
public String address; // Srcにないプロパティ
@Override
public String toString() {
return String.format("name=%s, address=%s", name, address);
}
}
public static void main(String[] args) {
Src src = new Src();
src.name = "コズレ花子";
src.hobby = "自転車";
Dest dest = new Dest();
dest.address = "東京都千代田区";
// コピー実行
Beans.copy(src, dest).execute();
System.out.println(dest); // -> name=コズレ花子, address=東京都千代田区
}
}
おまけ
ちなみに、 src
がnullだとNullPointerExceptionになります。