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

相關文章
相關標籤/搜索