serializable是什么?
:serializable是一个序列化对象的接口,一个类只有实现了Serializable接口,它的对象才能被序列化。
什么是序列化?
:将Java对象转换成字节序列,可被保存到磁盘上,或通过网络传输,以备以后重新恢复成对象。
serializable有什么作用?
serializable指定了一个serialVersionUID,这个serialVersionUID是用来辅助对象的序列化与反序列化的,原则上序列化后的数据当中的serialVersionUID与当前类当中的serialVersionUID一致,那么该对象才能被反序列化成功。这个serialVersionUID的详细的工作机制是:在序列化的时候系统将serialVersionUID写入到序列化的文件中去,当反序列化的时候系统会先去检测文件中的serialVersionUID是否跟当前的文件的serialVersionUID是否一致,如果一直则反序列化成功,否则就说明当前类跟序列化后的类发生了变化,比如是成员变量的数量或者是类型发生了变化,那么在反序列化时就会发生crash,并且会报出错误。
通用写法:
public class classname implements Serializable{
private static final long serialVersionUID = 1L;
private int temp;
private int i;
}
如果不写下面的private static final long serialVersionUID = 1L;,编译器会提示,当然,不写也行。