1.爲什麼要序列化
在網絡傳輸中需要序列化成二進制文件進行傳輸
在保存對象時候需要序列化成二進制文件進行保存
2.如何實現序列化
實現接口serializable
3.序列化版本ID的作用
在反序列化的時候起作用,拿到二進制文件的id與class文件進行id對比如果不一致,則拋出異常。
4.序列化版本ID生成策略
4.1警告提示,java編譯器會根據包名,類名,方法名,屬性名,生成一個64位hashcode
4.2 規定類文件爲固定id爲1L
5.爲什麼要規定序列化版本ID
如果我們想要在已經序列化後的java文件改變java文件的屬性,javac就會重新編譯一遍.java文件生成class文件。重新生成一個序列化版本ID,與二進制文件的ID做對比,就會不一致,拋異常。
再回到問題。如果規定了序列化版本ID,第一次編譯這個.java文件。生成的id都是固定的,以後怎麼修改都是固定的。二進制文件也是這個id,所以反序列化在比較id就永遠一致。
總結第5個問題:說白了,就是滿足可以隨時修改序列化類的屬性方法。