2012-10-19 51 views
3

我想用BeanUtils將屬性值從A類複製到B類,它具有相同字段但名稱不同。是否有可能爲不同的名稱提供一個屬性名稱的映射,年齡到不同的年齡等,並實現複製?我很想知道這是否可以通過任何方式使用Apache Commons公用程序(而不是任何其他工具)。使用BeanUtils複製bean之間不同名稱的屬性

class ClassA{ 
    private String name; 
    private Integer age; 
    ... // Setter and Getter methods 
} 

class ClassB{ 
    private String differentName; 
    private Integer differentAge; 
    ... // Setter and Getter methods for the private fields 
} 

回答

1

阿帕奇百科全書BeanUtils的具有方法populate(Object bean, Map properties)接受地圖密鑰值對來填充在Bean的方法。

注意:我剛剛看到了Apache-Commons的限制 - 但它對其他人可能仍然有用,並且就我而言更好的解決方案而言。

使用Dozer當名稱匹配時會自動複製值。或者就你的情況而言,你可以在xml映射文件中指定源和目標成員。

+0

但填充仍然需要相同的字段名稱。我如何將'age'屬性映射到'differentAge'屬性? – Cid

+0

正如您可以在鏈接的API中讀到的那樣:「屬性 - 通過屬性名稱鍵入的映射以及要設置的相應(字符串或字符串[])值」。關鍵將必須是「不同的年齡」和值20或什麼...您將不得不映射到這個值的地方或通過使用Dozer和xml映射。 – dngfng

+0

推土機已幫助 – Cid

相關問題