实用的BeanUtils工具类
生活随笔
收集整理的這篇文章主要介紹了
实用的BeanUtils工具类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
對象拷貝工具是否應該被摒棄呢?
其實也不然, 個人感覺還是用的方式是否正確,本工具類提供簡單的對象復
制,json序列化方式實現對象復制,深層次完成屬性的完美復制.
import com.alibaba.fastjson.serializer.SerializerFeature;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;/*** 通用對象工具類*/
public class BeanUtils {/*** 從一個對象拷貝屬性到另一個對象中(只拷貝屬性相同的字段)** @param dest 目標對象* @param orig 原始對象*/public static void copyProperties(Object dest, Object orig) {try {org.apache.commons.beanutils.BeanUtils.copyProperties(dest, orig);} catch (IllegalAccessException | InvocationTargetException ex) {}}/*** 對象的深拷貝,從一個實體類型轉為另一個類型 且只拷貝屬性相同的字段* 備注:* 1 如果只是單純的復制,實體類型沒有改變,可以使用deepClone方法* 2 如果被復制的對象為空,則復制為null* 3 支持boolean類型和整型 0,1的轉換 0 <-> false 1 <-> true* 4 如果是日期類型轉string 或string轉日期 需要在日期字段上加 @JSONField注解 并指定format參數為格式化類型* 5 屬性名稱不一致的字段無法轉換,需要get/set方法單獨設置值** @param t 被復制的對象* @param clazz 轉換成的對象類型* @param <T> 被復制的對象類型的泛型* @param <F> 轉換對象類型的泛型* @return 復制后的結果*/public static <T, F> F copyProperties(T t, Class<F> clazz) {String jsonStr = JsonUtils.toJsonString(t);return JsonUtils.parseObject(jsonStr, clazz);}/*** 獲取對象的屬性值,一般適用于動態獲取對象屬性值** @param bean 任何對象* @param name 屬性名,確保該屬性在對象中存在*/public static String getProperty(Object bean, String name) {try {return org.apache.commons.beanutils.BeanUtils.getProperty(bean, name);} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException ex) {}}/*** 給對象賦值,一般適用于動態給對象賦值** @param bean 任何對象* @param name 屬性名* @param value 屬性的值*/public static void setProperty(Object bean, String name, Object value) {try {org.apache.commons.beanutils.BeanUtils.setProperty(bean, name, value);} catch (IllegalAccessException | InvocationTargetException ex) {}}/*** 對象的深拷貝* @param t 被復制的對象* @param clazz 對象類型* @param <T> 泛型* @return 復制的對象*/public static <T> T deepClone(T t, Class<T> clazz) {String jsonStr = JsonUtils.toJsonString(t, SerializerFeature.WriteClassName);return JsonUtils.parseObject(jsonStr, clazz);}
}
總結
以上是生活随笔為你收集整理的实用的BeanUtils工具类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EJB理解
- 下一篇: DVWA-Reflected Cross