BeanUtils.copyProperties 复制可匹配的属性值,属于浅拷贝;嵌套对象和集合仍可能共享引用。下面要求目标类有可访问的无参构造器。
使用 BeanUtils
package com.hmifo.common.utils;
import org.springframework.beans.BeanUtils;
import java.util.List;import java.util.Map;import java.util.stream.Collectors;
public class BeanCopyUtils {
private BeanCopyUtils() { }
public static <V> V copyBean(Object source, Class<V> clazz) { //创建目标对象 V result = null; try { result = clazz.getDeclaredConstructor().newInstance(); //实现属性copy BeanUtils.copyProperties(source, result); } catch (Exception e) { throw new IllegalArgumentException("无法创建或复制目标对象", e); } //返回结果 return result; }
public static <O, V> List<V> copyBeanList(List<O> list, Class<V> clazz) { return list.stream() .map(o -> copyBean(o, clazz)) .collect(Collectors.toList()); }}
评论