开发中,都会遇到对象拷贝的需求,本工具类支持嵌套对象的拷贝
依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.79</version>
</dependency>
package com.example.demo.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.List;
import java.util.Objects;
public class BeanUtils {
/**
* 批量拷贝
*
* @param list 拷贝集合
* @param clazz 拷贝之后的类型
* @return 拷贝之后的列表
*/
public static <T> List<T> copyProperties(List<?> list, Class<T> clazz) {
if (Objects.isNull(list)) {
return null;
}
JSONArray jsonArray = (JSONArray) JSON.toJSON(list);
return jsonArray.toJavaList(clazz);
}
/**
* 单个拷贝
*
* @param o 拷贝对象
* @param clazz 拷贝之后的类型
* @return 拷贝之后的对象
*/
public static <T, O> T copyProperties(O obj, Class<T> clazz) {
if (Objects.isNull(obj)) {
return null;
}
JSONObject jsonObject = (JSONObject) JSON.toJSON(obj);
return jsonObject.toJavaObject(clazz);
}
}