2012-12-18 41 views
1

我正在嘗試編寫適配器。我有近50個屬性,我試圖從一個類適應另一個。在java中編寫適配器時的最佳做法

我的代碼如下所示:

public static Type2 getType2(Type1 type1) 
{ 
... 

    if(!StringUtils.isEmpty(type1.getAttribute1()) { 
    type2.setAttribute1(type1.getAttribute1()); 
    } 
    // and so on for all the 50 attributes 
... 
} 

有沒有更好的方式來寫這個適配器方法?

+1

適配器是否會反映'Type1'中的實時更改?這看起來更像是一個bean複製操作。 – McDowell

+2

最佳做法是不要有50個屬性。另外,嘗試推土機的反光豆複印機。 – artbristol

回答

2

你可以使用一個通用的方法來從一個實例複製屬性antoher:

public static <T> T copy(T source, T target) throws IllegalArgumentException, IllegalAccessException { 
    for (Field f : target.getClass().getDeclaredFields()) { 
     f.setAccessible(true); 
     Object o = f.get(source); 
     f.set(target, o); 
    } 
    return target; 
} 
+1

更好的是通過屬性訪問並檢查兩個對象是否具有相同的屬性(名稱和類型),存在setter等。聲明的字段有點冒險 – dkateros

+0

集合呢? –

+0

我可以排除一些像serialVersionId這樣的屬性嗎? – Kevindra