Java序列化小结


title: Java序列化小结
date: 2017-05-06 20:07:59
tags: 序列化
categories: Java基础

Java序列化就是将一个对象转化成一串二进制表示的字节数组,经过保存或传递这些字节数据来带到持久化或通信的目的。要序列化,对象必须实现java.io.Serializable接口。反序列化则是将这个字节数组再从新构形成对象,须要原始类做为模板,因此序列化的数据并不像class文件那样保存类的完整的结构信息。java

FileOutPutStream fos = new FileOutPutStream("serv.dat");
ObjectOutputStream oos = new ObjectOutputStream(fos);
SerialableObject object = new SerialableObject();
oos.writeObject(object);
oos.flush();
  • 当父类继承Serializable接口时,全部子类均可以被序列化。
  • 子类实现了Serializable接口,父类没有,父类中的属性不能序列化(不报错,数据会丢失),可是在子类中属性仍能正确序列化。
  • 若是序列化的属性是对象,则这个对象也必须实现Serializable接口,不然会报错。
  • 在反序列化时,若是对象有属性的修改或删减,则修改的部分属性会丢失,但不会报错。
  • 在反序列化时,若是serialVersionUID被修改,则反序列化会失败。

在纯java环境下,java序列化能够用。但我的认为还不如用fastjson序列化和反序列化(效率有人测试过比jdk序列化的高)。若是是多语言环境,尽可能用通用的数据结构传递和保存信息,如json或者xml,也能够考虑其余序列化技术protobuf,thrift,avro等等。json

相关文章
相关标签/搜索