1. 为什么要实现序列化接口Serializable?
答:实现序列化接口Serializable的目的是为了类可持久化,Java中的序列化机制能够将一个实例对象信息写入到一个字节流中(只序列化对象的属性值,而不会去序列化方法),序列化后的对象可用于网络传输(远程),或者持久化到数据库、磁盘中(本地存储)。为系统的分布和异构部署提供先决条件。若没有序列化,现在我们所熟悉的RPC(Remote Procedure Call,远程调用),对象数据库都不可能存在。
2.serialVersionUID是干什么用的?
serialVersionUID适用于java序列化机制。简单来说,JAVA序列化的机制是通过判断类的serialVersionUID来验证的版本一致的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID于本地相应实体类的serialVersionUID进行比较。如果相同说明是一致的,可以进行反序列化,否则会出现反序列化版本一致的异常,即是InvalidCastException。
3.实体类中如何自动生成serialVersionUID?
(1)在IDEA中生成UID,首先找到文件菜单下的设置
(2)在Setting中,根据路径Editor->Inspections->Java进入下图所示
(3)在Java目录下,根据路径Serialization issues -> Serializable class without 'serialVersionUID',在其后面打上勾,保存应用(apply)就行了。
(4)看一下效果。
a.实体类会有提示
b.Alt + Enter 会出现如下图所示选项,确认就行
c.生成了serialVersionUID