2014-04-08 38 views
0

我有一個基類A和派生類B。 如何將...複製到一個簡單的行中...將類型爲A的對象的字段複製到B類型的對象中? 我有一個方法,如果有幫助,可以從字段值構建對象。 我不想使用任何類型的反射!如何將字段從基類複製到dervived類?

class A{ 
    String id; //and setter/getter 
} 
class B extends A{ 
    String b; //and setter/getter 
} 
public A buildA(String id){ 
    A=new A(); 
    a.setId(id); 
    return A(); 
} 
// how to copy A=buildA("a") into a B type of object... 
// I would avoid doing 
//public B voidB(String id, string b){ 
B=new B(); 
b.setId(
b.setB... 
// Remark - I cannot do the init from constructor with fields! 
+0

您只需要'B'類中的複製方法,它從'A'複製值:'public void copy(final A a)'。然後,只需在'B'裏面寫出所有的複製方法,你就可以調用'B b; A;',init'A'和'B',只要你想將'A'拷貝到'B'中,就調用'b.copy(a);'。 – Jared

+0

爲什麼你不在構造函數中進行復制? – markusw

+0

爲什麼?爲什麼你想要兩次相同的數據? – EJP

回答

1

有一個叫Dozer庫,它可以幫助你(我還沒有嘗試過,雖然)。

0

這是你在找什麼,或者我在錯誤的軌道上?

public B buildB(A a,String str){ 
b=new B(); 
b.setId(a.getId()); 
b.setB(str); 
return B; 
} 
+0

這就是我想要的地方,但以一種時尚的方式:) – Roxana

+0

在構造函數中進行復制!純粹的Java沒有其他的方式 – markusw

+0

@Roxana .. markusw是正確的,要麼我寫或複製的構造方式只有兩種方式來做到這一點(根據我的知識)...時尚的方式不應該是一個藉口拒絕解決方案。 :/ –

相關問題