java怎么将一个对象拷贝到另一个对象 对象属性复制的多种实现方式

admin 百科 24
对象属性复制常用方法包括:1. 手动getter/setter,适用于简单对象;2. Spring BeanUtils,便捷高效,适合Spring项目;3. MapStruct,编译期生成,性能高;4. 序列化实现深拷贝,完整隔离引用但性能低;5. Cloneable接口,需重写支持深拷贝。选择依据场景需求与性能权衡。

java怎么将一个对象拷贝到另一个对象 对象属性复制的多种实现方式-第1张图片-佛山资讯网

在 Java 中,将一个对象的属性复制到另一个对象是开发中常见的需求,比如在 DTO 转换、缓存处理或避免对象引用污染时。实现方式有多种,各有适用场景和优缺点。以下是几种主流的对象属性复制方法。

1. 手动 Getter/Setter 赋值

最直接的方式是通过调用源对象的 getter 方法获取属性值,再通过目标对象的 setter 方法设置。

  • 适用于属性少、结构简单的对象
  • 代码清晰,易于调试
  • 但当属性较多时,代码冗长且易出错

示例:

User user = new User();
user.setName("张三");
user.setAge(25);

UserInfo userInfo = new UserInfo();
userInfo.setName(user.getName());
userInfo.setAge(user.getAge());

2. 使用 BeanUtils 工具类(Apache 或 Spring)

借助第三方工具类可以自动完成同名属性的拷贝,大幅减少样板代码。

立即学习“Java免费学习笔记(深入)”;

  • Apache Commons BeanUtils:功能强大,但性能较差,且依赖较多
  • Spring BeanUtils:轻量、高效,推荐在 Spring 项目中使用
  • 仅支持 public 属性和标准 getter/setter
  • 不同类型属性不会自动转换(除非使用 ConvertUtils)

Spring BeanUtils 示例:

User source = new User("李四", 30);
UserCopy target = new UserCopy();
org.springframework.beans.BeanUtils.copyProperties(source, target);

注意:copyProperties 按属性名匹配,忽略 null 值(默认行为),不递归复制复杂嵌套对象。

3. 使用 MapStruct 等编译期生成映射代码

MapStruct 是一个注解处理器,能在编译时生成类型安全的映射实现类,性能高且可定制。

标签: java apache 处理器 app 工具 stream

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~

趣科技 机圈观察员 茄考网 茄录网 海印网 雷鹃网 鹃朝网 互联网观察员 评测官
趣科技 机圈观察员 茄考网 茄录网 海印网 雷鹃网 鹃朝网 互联网观察员 评测官