直接强转
但是有时候强转会失败,比如下图所示
虽然这种强转方式没有出现编译错误,但是运行起来可能就会报错了,比如下图所示
java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.xxxxx.xxxxx.xxxx.models.Zjzfxmsp (java.util.LinkedHashMap is in module java.base of loader 'bootstrap'; cn.xxxxx.xxxxx.xxxx.models.Zjzfxmsp is in unnamed module of loader org.springframework.boot.loader.LaunchedURLClassLoader @728938a9)
大概意思是:java.util.LlinkedHashMap位于加载器“bootstrap”的模块java.base中,而我定义的类在LaunchedURLClassLoader加载器中,强转失败。
有时候调用其他方法返回来的值是Object类型,可能实际上是LlinkedHashMap等,直接强转虽然不会编译错误,但却是强转不了的,这种情况下就用序列化和反序列化来转成自己想要的实体类。
比如以下方式:
1、使用Jackson序列化方式
下面代码是例子
ObjectMapper objectMapper = new ObjectMapper(); Zjzfxmsp zfsp = objectMapper.convertValue(object, Zjzfxmsp.class);
或者
ObjectMapper objectMapper = new ObjectMapper(); //序列化成JSON格式字符串 String json = objectMapper.writeValueAsString(object); //反序列化成实体类对象 Job copyUser = objectMapper.readValue(json, Job.class);
2、使用Gson序列化方式
Gson gson = new Gson(); //序列化成JSON格式字符串 String json = gson.toJson(object); //反序列化成实体类对象 Job job1 = gson.fromJson(json, Job.class);
依赖
<!-- gson依赖 --> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.6</version> </dependency>
序列化方式可以实现深拷贝
分类:
后端
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】