假設我有一個Java bean,稱爲Employee,具有一些屬性。
我想將Employee的所有屬性複製到同一個Java bean的另一個實例。將所有屬性從Java bean設置爲另一個
一個解決方案是使用getter獲取屬性並將其設置爲另一個實例。但是如果POJO中有很多屬性,那將會很耗時。
有沒有更快捷的方法來實現?
假設我有一個Java bean,稱爲Employee,具有一些屬性。
我想將Employee的所有屬性複製到同一個Java bean的另一個實例。將所有屬性從Java bean設置爲另一個
一個解決方案是使用getter獲取屬性並將其設置爲另一個實例。但是如果POJO中有很多屬性,那將會很耗時。
有沒有更快捷的方法來實現?
隨着assylias提到,複製一個bean需要的時間非常少。除非你需要每秒做幾百萬次。我認爲重要的一點是減少愚蠢代碼的數量,所以要「複製」一個bean,你可以使它擴展爲Clonable,而JVM將完成剩下的工作。你只需要調用bean.clone()。
另一個更靈活的選項是使用Apache BeanUtils,它可以使用反射在對象之間進行復制。
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);
}
}
如果你只有幾節課,支持克隆,然後重寫克隆()可能是最快的解決方案。否則,如果你需要一個通用的解決方案,不要重新發明輪子:
*「但是,這將是耗時的,如果有在POJO中有許多屬性。*「=>你是否試圖測量需要多長時間? – assylias
費時我的意思是開發時間將用於寫代碼 – Anand