集合中的实体类根据一个字段合并_JAVA中序列化与反序列化
一、序列化和反序列化的概念
把对象转换为字节序列的过程称为对象的序列化;
把字节序列恢复为对象的过程称为对象的反序列化。
说人话:就是JAVA对象需要保存或通过网络传输必须保存为二进制才行,所以就需要把JAVA对象转换成二进制或二进制会的成JAVA对象。
二、如何使Java类可序列化?
实现java.io.Serializable接口,它是一个标记接口,意味着不包含任何接口和字段。仅用于标识可序列化的语义。
三、代码举例
定义一个JAVA实体类
序列化与化序列化
序列化后的文件
注意:代码演示了一个JAVA类被序列化和反序列化,假设我们尝试去除JAVA类中implements Serializable,再次运行就会出现错误,如下:
四、JAVA类中某些字段不想被序列化怎么办?
在字段中直接加上transient即可,如下图
我们再次运行代码,即可看到如下结果:
五、什么是serialVersionUID?
java序列化机制是通过类的serialVersionUID来验证版本一致性的。在反序列化时,jvm会把传来的字节流中的serialVersionUID和本地相应实体类的serialVersionUID进行比较,如果相同就认为一致,可以进行反序列化,否则出现InvalidCastException异常
模拟一下,我们先把User JAVA类中定义serialVersionUID = 4359709211352400087,然后序列化后再悠serialVersionUID = 1L,再次反序列化,得到如下错误:
再看JVM的代码
五、如何生成serialVersionUID?
一般来说有两种生成方式:
一个是默认的1L,比如:private static final long serialVersionUID = 1L;
一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:private static final long serialVersionUID = -8940196742313994740L;之类的。
集合中的实体类根据一个字段合并_JAVA中序列化与反序列化相关推荐
- java list 分组_Java 将List中的实体类按照某个字段进行分组并存
1.JDK1.8之前: 假设有实体类User,里面有字段id,我们将相同id的User进行分组,并存放在Map中.(例子不是很恰当,但很能说明问题) public static void main(S ...
- java将map根据key分组_Java将List中的实体类按照某个字段进行分组并存放至Map中操作代码...
本篇文章小编给大家分享一下Java将List中的实体类按照某个字段进行分组并存放至Map中操作代码,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 1. ...
- android java 实体类 object变量 保存_Java中的实体类--Serializable接口、transient 关键字...
在java中,实体类是一个非常重要的概念,我们可以在实体类中封装对象.设置其属性和方法等.关于实体类,也经常涉及到适配器模式.装饰者模式等设计模式.那么在实际代码开发中,关于实体类的注意事项有哪些呢? ...
- Java中的实体类(VO、PO、DO、DTO、BO、QO、DAO、POJO)
Java中的实体类(VO.PO.DO.DTO.BO.QO.DAO.POJO) PO(persistant object) 持久对象 DO(Domain Object)领域对象 TO(Transfer ...
- java获取spring注解的实体_Spring 注解实体类中非数据库字段属性
今天要给一个实体类添加一个List集合属性! private List childList = new ArrayList(); 写完后get/set方法一写,启动就报错: org.hibernate ...
- android 遍历实体类,Java中遍历实体类(处理MongoDB)
在实际过程中,经常要将实体类进行封装,尤其是处理数据库的过程中:因此,对于遍历实体类能够与数据库中的一行数据对应起来. 我是使用的环境是Spring boot,访问的数据库时MongoDB 实体类遍历 ...
- 浅谈三层架构中的实体类(C#)
最近因为三层架构中的实体类,引发了不少小问题,下面列举一下,谈谈自己的感想. 本文所指的实体类仅限于三层中的实体类,即数据库表的映射. 一.为什么要用实体类? | 使程序简洁易懂,便于维护. | ...
- netbeans连接数据库_NetBeans Java EE技巧#1 –数据库中的实体类
netbeans连接数据库 NetBeans IDE是开发各种应用程序的绝佳选择. 具体来说,我每天都使用它来开发和维护Java EE应用程序. 在过去的几个发行版中,不仅Java EE的生产力提高了 ...
- NetBeans Java EE技巧#1 –数据库中的实体类
NetBeans IDE是开发各种应用程序的绝佳选择. 具体来说,我每天都使用它来开发和维护Java EE应用程序. 在过去的几个发行版中,不仅Java EE的生产力提高了,而且NetBeans ID ...
最新文章
- tcp/ip 协议栈Linux内核源码分析九 IPv6分片ip6_fragment 分析
- js实现焦点进入文本框内关闭输入法:imeMode
- OO实现ALV TABLE 四:ALV的显示样式
- Linux 卸载分区(会格式化分区数据)
- pyqt 子窗口控制主窗口绘图_实战PyQt5: 005-主窗口QMainWindow
- java四大模块_Spring框架七大模块
- 51Nod-1049 最大子段和【DP】
- 芜湖机器人餐厅地址_自助餐哪家强?得看谁让你扶墙... 芜湖8家自助餐厅超强攻略来了...
- 【模型转换】最少点的覆盖区间
- c#使用word、excel、pdf ——转
- OOP(面向对象)总结(有这一篇足矣)
- 世预赛:12强赛首战国足0-3不敌澳大利亚,下一场面对日本队国足会如何调整?
- Redis的数据变成backup
- 如何删除oracle备份集,RMAN中删除OBSOLETE备份集问题
- R语言与数据分析练习:K-Means聚类
- php学好要多久,零基础php自学要多久
- 编码:隐匿在计算机软硬件背后的语言pdf-Code:The Hidden Language of Computer Hardware and Software-Charles Petzold-pdf
- word文档任意位置开始插入页码
- 用微分和差分方程描述的因果LIT系统
- python 操作ps脚本_python – 有没有办法以编程方式获得ps输出?
热门文章
- android 申请sdcard权限_Android sdcard读写权限问题之中的一个
- java离职交接文档_定了!财会人离职不办这2项交接,要承担法律责任!后果非常严重...
- 趋势交易 高 更高_2020年为开发商带来什么,以及更多的行业趋势
- devops的重要性_为什么DevOps是当今最重要的技术战略
- 2017年大白菜系统操作说_为什么操作系统在2017年更重要
- firefox 开源_Firefox 10岁了,Microsoft开源了更多,等等
- (69)Vue-cli 打包与部署
- TypeScript 中类型 any,void,unknown,never之间的区别
- Bootstrap 支持的设备类型
- Generator函数的基本概念