最简单的方式,使用JSON进行序列化
List<A> aList = new ArrayList<>(); String jsonStr = JSON.toJSONString(aList); List<B> result = JSONArray.parseArray(jsonStr, B.class);
1. 直接使用 Springframework 下的工具 BeanUtils 可以进行简单对象的复制拷贝,具体使用方式如下:
类A的信息:
import lombok.Data; import lombok.ToString; @Data public class ClassA { private String name; private String email; private Integer age; }
类B的信息:
import lombok.Data; import lombok.ToString; @Data @ToString public class ClassB { private String name; private String email; }
测试对象拷贝的案例:
import org.springframework.beans.BeanUtils; public class TestAB { public static void main(String[] args) { ClassA classA = new ClassA(); classA.setAge(1); classA.setEmail("test@qq.com"); classA.setName("test A"); ClassB classB = new ClassB(); BeanUtils.copyProperties(classA, classB, ClassB.class); System.out.println(classB); } }
输出结果:
ClassB(name=test A, email=test@qq.com)
2. 如果是对数组进行复制拷贝,则需要写一个 ListBeanUtils 工具类,如下所示:
import java.util.List; import java.util.Objects; public class ListBeanUtils<T> { public void copyList(Object obj, List<T> list2, Class<T> classObj) { if ((!Objects.isNull(obj)) && (!Objects.isNull(list2))) { List list1 = (List) obj; list1.forEach(item -> { try { T data = classObj.newInstance(); BeanUtils.copyProperties(item, data); list2.add(data); } catch (InstantiationException e) { } catch (IllegalAccessException e) { } }); } } }
测试数组拷贝的案例:
import org.springframework.beans.BeanUtils; import java.util.ArrayList; import java.util.List; public class TestAB { public static void main(String[] args) { ClassA classA = new ClassA(); classA.setAge(1); classA.setEmail("test@qq.com"); classA.setName("test A"); ClassA classA1 = new ClassA(); classA1.setAge(12); classA1.setEmail("test2@qq.com"); classA1.setName("test A2"); List<ClassA> aList = new ArrayList<>(); aList.add(classA); aList.add(classA1); List<ClassB> bList = new ArrayList<>(); ListBeanUtils<ClassB> utils = BeanUtils.instantiateClass(ListBeanUtils.class); utils.copyList(aList, bList, ClassB.class); System.out.println(bList); } }
输出结果:
[ClassB(name=test A, email=test@qq.com), ClassB(name=test A2, email=test2@qq.com)]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架