大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
BeanCopier 对象拷贝
- 对象拷贝转为其他类的对象
- 对象数组拷贝转为其他类的对象数组
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.springframework.cglib.beans.BeanCopier;
/**
* BeanCopier工具类
*
* @author zwy
*/
public class BeanCopierUtil {
private static Map<String, BeanCopier> beanCopierMap = new ConcurrentHashMap<>();
/**
* 初始化 BeanCopier
*
* @param source
* @param target
* @return
*/
private static BeanCopier initCopier(Class source, Class target) {
BeanCopier beanCopier = BeanCopier.create(source, target, false);
beanCopierMap.put(source.getName() + "_" + target.getName(), beanCopier);
return beanCopier;
}
/**
* 获取BeanCopier
*
* @param source
* @param target
* @return
*/
private static BeanCopier getBeanCopier(Class source, Class target) {
BeanCopier beanCopier = beanCopierMap.get(source.getClass().getName() + "_" + target.getName());
if (beanCopier != null) {
return beanCopier;
}
return initCopier(source, target);
}
/**
* Pojo 类型转换(浅复制,字段名&类型相同则被复制)
*
* @param source 原对象
* @param targetClass 目标类
* @param <T>
* @return
*/
public static <T> T convert(Object source, Class<T> targetClass) {
if (source == null) {
return null;
}
BeanCopier beanCopier = getBeanCopier(source.getClass(), targetClass);
try {
T target = targetClass.getDeclaredConstructor().newInstance();
beanCopier.copy(source, target, null);
return target;
} catch (Exception e) {
throw new RuntimeException("对象拷贝失败" + source + "_" + targetClass);
}
}
/**
* Pojo 类型转换(浅复制,字段名&类型相同则被复制)
*
* @param source 原对象
* @param targetClass 目标类
* @param <E>
* @return
*/
public static <E> List<E> convert(List source, Class<E> targetClass) {
if (source == null) {
return null;
}
try {
if (source.isEmpty()) {
return source.getClass().getDeclaredConstructor().newInstance();
}
List result = source.getClass().getDeclaredConstructor().newInstance();
for (Object each : source) {
result.add(convert(each, targetClass));
}
return result;
} catch (Exception e) {
throw new RuntimeException("对象拷贝失败" + source + "_" + targetClass);
}
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197189.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...