標籤:通過 方法 程式員 cte 除了 htm 位置 copy span
BeanUtils提供了對java發射和自省API的封裝,這裡對BeanUtils.copyProperties的用法做一個小小的介紹。
通過函數名可以知道,copyProperties函數是對屬性進行拷貝,該函數有兩個參數,一個是原始的資料,另一個是接收這些屬性的資料。這裡給大家介紹一個我遇到的一個坑:在不同的jar包中,該函數的兩個參數的位置不一樣,有一種是copyProperties(java.lang.Object dest , java.lang.Object source);另外一種恰恰相反,copyProperties(java.lang.Object source , java.lang.Object dest),因此在實際使用的時候需要注意參數的位置。
當兩個對象之間的屬性完全一樣時,毫無疑問調用copyProperties時完全成功的,但是如果兩個對象之間存在不同的屬性時,會發生什麼情況呢,BeanUtils則不對這些屬性進行處理,需要程式員手動處理。
除了BeanUtils以外,還有一個名為PropertyUtils的工具類,該類中也提供了copyProperties()方法,這個方法與前面說的方法相似,唯一不同點是PropertyUtils的工具類裡面的copyProperties()方法提供類型轉換功能,可以在支援的資料類型內進行數類型轉換。由於增加了類型轉換,因此速度會稍微慢一些。propertyUtils支援的轉換類型如下:
* java.lang.BigDecimal * java.lang.BigInteger * boolean and java.lang.Boolean * byte and java.lang.Byte * char and java.lang.Character * java.lang.Class * double and java.lang.Double * float and java.lang.Float * int and java.lang.Integer * long and java.lang.Long * short and java.lang.Short * java.lang.String * java.sql.Date * java.sql.Time * java.sql.Timestamp
需要注意的是這裡不支援java.util.Date,只支援java.sql.Date,因此在進行資料類型轉換時需要注意這個問題。
BeanUtils.copyProperties雖然很實用,但是其花費的時間比較長,超過手動調用get和set方法,如果對時間沒有太大要求可以考慮用這個函數。
本文參考自:https://www.cnblogs.com/HassanBlog/articles/3200239.html
java中 BeanUtils.copyProperties的用法