序列化和反序列化?序列化ID表示什么意思?
Java的对象序列化就是将实现了Serializable接口的对象转换成一个字节序列,并在以后将这个字节序列完全恢复为原来的对象,这一过程可通过网络进行,意味着序列化机制能自动弥补不同操作系统之间的差异。对象序列化可以实现轻量级持久性。
“持久性”意味着对象的生存周期不取决于程序是否正在执行;它可生存与程序的调用之间。通过将一个序列化对象写入磁盘,然后再重新调用程序时恢复该对象实现持久性。
反序列化就是根据这些保存的信息重建对象的过程。(将字节序列转化为java对象的过程)
序列化过程:
1)创建OutputStream对象,然后将其封装在ObjectOutputStream对象内,如:
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(“目标地址路径”));
2)调用writeObject()序列化对象:
out.writeObject(“Hellohi”);
反序列化过程:
1)将InputStream封装在ObjectInputStream内,如:
ObjectInputStream in = new ObjectInputStream(new fileInputStream(“目标地址路径”));
2)调用readObject()
String obj1 = (String)in.readObject();
序列化ID:
在java序列化中,ID起着关键的作用,java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。反序列化时,JVM会把传来的字节流中的serialVersionUID与本地实体类中的serialVersionUID进行比较,如果相同则认为是一致的,便可以进行反序列化,否则就会报序列化版本不一致的异常,序列化失败。
参考书籍《Java编程思想》第十八章