Java序列化小结
title: Java序列化小結
date: 2017-05-06 20:07:59
tags: 序列化
categories: Java基礎
---
Java序列化就是將一個對象轉化成一串二進制表示的字節數組,通過保存或傳遞這些字節數據來帶到持久化或通訊的目的。要序列化,對象必須實現java.io.Serializable接口。反序列化則是將這個字節數組再重新構造成對象,需要原始類作為模板,所以序列化的數據并不像class文件那樣保存類的完整的結構信息。
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等等。
轉載于:https://www.cnblogs.com/reason-cai/p/6818189.html
總結
- 上一篇: Spring IOC源代码具体解释之容器
- 下一篇: Excel操作类