Java工具方法——属性拷贝方法:BeanUtils.copyProperties(Object, Object)
介紹
org.springframework.beans.BeanUtils.copyProperties(Object, Object)是spring 框架的對象工具類:BeanUtils下的一個拷貝對象屬性的方法。
官方注釋
把給定的源對象屬性值拷貝到目標對象中。
注意:源對象類與目標對象類不一定非要完全匹配,也不必要由哪一方派生,只要屬性匹配就可以。任何源對象的暴露在外的而目標對象沒有暴露的屬性都將默認忽略。
這只是一個簡便的方法。對于更復雜的轉換需要,請考慮使用完整的BeanWrapper(BeanWrapper.class)。
應用
這個靜態方法實際上就是根據對象屬性的Set方法名來匹配的,Set方法名一致則可以拷貝成功,如果不一致則就算屬性名相同也不會拷貝成功。
不過一般情況下,Set方法是根據屬性名自動生成的,那么同樣的Set名一定是由同樣的屬性名生成的。所以只要保證屬性名一致,生成Set后不重構屬性名就不會有問題。因為對象屬性重構之后不會修改Set方法名,因此如果導致了重構后屬性名與Set方法名不對應,就可能copy屬性失敗。
可以結合映射的方式對其進行調用,如下所示:
public static <T> T copy(Object srcObj, Class<T> destClass) {if(srcObj == null) {return null;}T destObj = null;try {destObj = destClass.newInstance();} catch (InstantiationException | IllegalAccessException e) {throw new RuntimeException(e);}BeanUtils.copyProperties(srcObj, destObj);return destObj;}注意,這樣的方式是通過目標類的class對象來生成一個新的目標對象,從而復制屬性,也就是說,如果需要把源對象中的屬性放入一個新的對象中,可以用上面的進一步封裝,但如果是一個已經有部分屬性的目標對象,那么依然要直接使用copyProperties()方法。
總結
以上是生活随笔為你收集整理的Java工具方法——属性拷贝方法:BeanUtils.copyProperties(Object, Object)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java核心篇之JVM--day3
- 下一篇: Java本地文件操作