java如何复制属性值
复制属性值的常见方法
使用BeanUtils.copyProperties
Apache Commons BeanUtils库提供copyProperties方法,可快速复制相同属性名的值:
BeanUtils.copyProperties(targetObject, sourceObject);
需确保属性名称和类型匹配,忽略不匹配的属性。
使用Spring的BeanUtils
Spring框架提供类似的工具类,性能更优:
org.springframework.beans.BeanUtils.copyProperties(sourceObject, targetObject);
手动Getter/Setter赋值
直接通过getter和setter方法赋值,适用于精确控制场景:
target.setName(source.getName());
target.setAge(source.getAge());
使用ModelMapper
第三方库ModelMapper支持复杂对象映射:
ModelMapper modelMapper = new ModelMapper();
TargetObject target = modelMapper.map(sourceObject, TargetObject.class);
通过序列化深拷贝
利用序列化实现完全独立的副本:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(source);
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray()));
TargetObject target = (TargetObject) ois.readObject();
需实现Serializable接口。
选择依据

- 简单场景:优先使用Spring BeanUtils
- 复杂映射:考虑ModelMapper
- 需要完全隔离:使用序列化方式
- 精确控制字段:手动赋值






