物件copy只拷貝物件非null屬性

2021-10-19 17:29:56 字數 961 閱讀 8499

問題描述:在最近做專案的時候,使用到了物件copy,而只需要拷貝源物件的非空屬性,為null的屬性不進行copy。

解決方法

1.hutool開源庫為我們提供了更為強大的bean工具-beanutil

cn.hutool

hutool-all

4.1.14

//複製舊的屬性過來,忽略null屬性,忽略null值,有值的以新的為主,null的則以舊為主

beanutil.copyproperties(sourceobject, targetobject,

true, copyoptions.create().setignorenullvalue(true).setignoreerror(true));

注:在測試過程中發現hutool 5.x已經不支援該方法

2.自己定義乙個屬性為null不複製的方法

//獲取到物件中值為null的屬性名稱

public static string getnullpropertynames (object source)

}string result = new string[emptynames.size()];

return emptynames.toarray(result);

}//物件copy,第三個引數指忽略這些屬性值的copy

public static void copypropertiesignorenull(object src, object target)

copypropertiesignorenull 就是自己定義的方法,借助beanutils.copyproperties();(copyproperties預設是會把null的給替換掉)

BeanUtils只拷貝物件非null屬性

在最近做專案的時候,使用到了物件copy,而只需要拷貝源物件的非空屬性,為null的屬性不進行吧copy。而beanutil.copyproperties sourceobject,targetobject 查了資料,解決方法如下 1 hutool開源庫為我們提供了更為強大的bean工具 beanu...

BeanUtils只拷貝物件非null屬性

最近進行物件操作,使用了糊塗工具,感覺非常強大 cn.hutool groupid hutool all artifactid 4.1.14 version dependency 複製舊的屬性過來,忽略null屬性,忽略null值,有值的以新的為主,null的則以舊為主 beanutil.copyp...

copy 複製物件

作用 提供一些函式,可以使用淺副本或深副本語義複製物件 1.淺副本 copy 建立的淺副本 shallow copy 是乙個形容器,其中填充原物件內容的引用,建立list物件的乙個淺副本時,會構造乙個新的list.並將原物件的元素追加到這個list。1.深副本 deepcopy 建立的深副本是乙個新...