序列化主要用於涉及到流的地方,一般存儲及讀取文件,或者進行遠程傳輸時都會涉及到流。
對於自己建的java對象POJO,如果不實現序列化的話,無法進行流傳輸。
實現序列化只需要實現一個接口implements Serializable。
在實現后,一定要聲明一個
private static final long serialVersionUID = 1L;
如果不聲明,系統會自動分配一個,但是代碼版本調整的時候有可能發生變動。
而一旦變動,在讀取反序列化之前版本的數據時會報以下錯誤:
java.io.InvalidClassException: net.jy.redis.pojo.User; local class incompatible: stream classdesc serialVersionUID = -3418623797767119694, local class serialVersionUID = 1
建議實現序列化接口時,直接聲明好serialVersionUID 。在以后代碼更新中,只要和之前版本有聯系,serialVersionUID 就不能進行修改,否則無法序列化或反序列化之前序列化流