従業員などの Java Bean にいくつかのプロパティがあるとします。
Employee のすべてのプロパティを同じ Java Bean の別のインスタンスにコピーしたいと考えています。
1 つの解決策は、getter を使用してプロパティを取得し、それを別のインスタンスに設定することです。ただし、POJO に多くのプロパティがある場合、これには時間がかかります。
同じことを達成するためのより速い方法はありますか?
従業員などの Java Bean にいくつかのプロパティがあるとします。
Employee のすべてのプロパティを同じ Java Bean の別のインスタンスにコピーしたいと考えています。
1 つの解決策は、getter を使用してプロパティを取得し、それを別のインスタンスに設定することです。ただし、POJO に多くのプロパティがある場合、これには時間がかかります。
同じことを達成するためのより速い方法はありますか?
assylias が述べたように、Bean をコピーするのにかかる時間は非常に短いです。これを1秒間に数百万回行う必要がない限り。
重要な部分 (私が思うに) は、ばかげたコードの量を減らすことです。そのため、Bean を「コピー」するには、それをClonableに拡張することができ、残りは JVM が行います。bean.clone() を呼び出すだけです。
別のより柔軟なオプションは、リフレクションを使用してオブジェクト間でコピーできるApache BeanUtilsを使用することです。
クローン作成をサポートするクラスが数個しかない場合は、 clone() をオーバーライドすることが最速のソリューションになる可能性があります。それ以外の場合、一般的な解決策が必要な場合は、車輪を再発明しないでください。
Object.clone
浅いコピーを実行するため、独自のコピー コンストラクターをロールする方がよい場合があります。
public class Dog {
public final List<String> names;
public int age;
public int weight;
public Dog() {
names = new ArrayList<String>();
}
protected Dog(Dog original) {
names = new ArrayList<String>(original.names);
age = original.age;
weight = original.weight;
}
public Dog copy() {
return new Dog(this);
}
}