admin管理员组

文章数量:1636910

为什么要implement Serializable

一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才是可序列化的。因此如果要序列化某些类的对象,这些类就必须实现Serializable接口。而实际上,Serializable是一个空接口,没有什么具体内容,它的目的只是简单的标识一个类的对象可以被序列化。

什么情况下需要序列化:

  1. 当你想把的内存中的对象写入到硬盘的时候。
    
  2. 当你想用套接字在网络上传送对象的时候。
    
  3. 当你想通过RMI传输对象的时候。
    

再稍微解释一下:

  1. 比如说你的内存不够用了,那计算机就要将内存里面的一部分对象暂时的保存到硬盘中,等到要用的时候再读入到内存中,硬盘的那部分存储空间就是所谓的虚拟内存。在比如过你要将某个特定的对象保存到文件中,我隔几天在把它拿出来用,那么这时候就要实现Serializable接口。
  2. 在进行Java的Socket编程的时候,你有时候可能要传输某一类的对象,那么也就要实现Serializable接口。最常见的你传输一个字符串,它是JDK里面的类,也实现了Serializable接口,这样做为的是将数据变为二进制来传输,所以可以在网络上传输。
  3. 如果要通过远程的方法调用(RMI)去调用一个远程对象的方法,如在计算机A中调用另一台计算机B的对象的方法,那么你需要通过JNDI服务获取计算机B目标对象的引用,将对象从B传送到A,就需要实现序列化接口

serialVersionUID?

serialVersionUID用作Serializable类中的版本控件。如果您没有显式声明serialVersionUID,JVM将根据您的Serializable类的各个方面自动为您执行此操作,如Java(TM)对象序列化规范中所述。

什么时候应该更新你的serialVersionUID?
如果使用对可序列化类的某些不兼容的Java类型更改更新序列化类,则必须更新serialVersionUID。
尽量不要随便更新这个id

怎么生成这个id
idea中 setting> editor>inspection 搜素UID 如图勾选 apply
这样在类implements Serializable的时候就会有个warning 然后你操作一下 他就会帮你生成了

本文标签: 如何使用自动生成serializableimplementIDEA