2012-10-07 78 views
2

假設我有一個Java bean,稱爲Employee,具有一些屬性。
我想將Employee的所有屬性複製到同一個Java bean的另一個實例。將所有屬性從Java bean設置爲另一個

一個解決方案是使用getter獲取屬性並將其設置爲另一個實例。但是如果POJO中有很多屬性,那將會很耗時。

有沒有更快捷的方法來實現?

+0

*「但是,這將是耗時的,如果有在POJO中有許多屬性。*「=>你是否試圖測量需要多長時間? – assylias

+0

費時我的意思是開發時間將用於寫代碼 – Anand

回答

1

隨着assylias提到,複製一個bean需要的時間非常少。除非你需要每秒做幾百萬次。我認爲重要的一點是減少愚蠢代碼的數量,所以要「複製」一個bean,你可以使它擴展爲Clonable,而JVM將完成剩下的工作。你只需要調用bean.clone()。

另一個更靈活的選項是使用Apache BeanUtils,它可以使用反射在對象之間進行復制。

+0

Apache BeanUtils對我來說是新東西..感謝它的工作 – Anand

+0

看看[apache commons](http://commons.apache.org/) )項目。那裏有很多公用事業。我經常使用lang,IO,日誌記錄,CLI,beanutils和exec模塊。 – Augusto

0

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); 
    } 
} 

kudos

0

如果你只有幾節課,支持克隆,然後重寫克隆()可能是最快的解決方案。否則,如果你需要一個通用的解決方案,不要重新發明輪子:

相關問題