Java如何将一类对象数组转换为字段名不同的另一类对象数组
Java不同类型对象数组的转换方案(基于Stream API)
前置准备
首先确保Thing类已经提供id、description字段的getter方法,Item类提供全参构造方法(或无参构造+code、data字段的setter方法)。
最简实现代码
import java.util.Arrays; // 转换逻辑 Thing[] originalThings = ...; // 你的原始Thing数组 Item[] targetItems = Arrays.stream(originalThings) // 按照映射规则完成单个对象转换 .map(thing -> new Item(thing.getId(), thing.getDescription())) // 转换为Item类型数组 .toArray(Item[]::new);
逻辑说明
- 第一步用
Arrays.stream()将原对象数组转为Stream流 - 第二步用
map()中间操作完成单个对象的字段映射,把每个Thing对象的id赋值给Item的code、description赋值给Item的data - 第三步用
toArray()传入Item数组的构造器引用,直接生成目标类型的数组
仅有无参构造的适配写法
如果你的Item类没有全参构造,只能通过无参构造+setter赋值,把map部分改写为如下形式即可:
.map(thing -> { Item item = new Item(); item.setCode(thing.getId()); item.setData(thing.getDescription()); return item; })
扩展说明
如果项目中有大量类似的不同类对象转换场景,也可以引入MapStruct这类编译期映射工具,自动生成转换代码,避免手动编写大量重复的映射逻辑;如果只是单次简单转换,直接用上述Stream方案即可,无需引入额外依赖。
内容的提问来源于stack exchange,提问作者Woodchuck
相关产品推荐
相关产品推荐

