int company_id; String company_addr; public Serial1(int company_id, String company_addr) { this.company_id = company_id; this.company_addr = company_addr; }
public String toString() { return "DATA: "+company_id+" "+ company_addr; } public void todo(){}//無關緊要的方法 }
首先將老版本序列化,然后用新版本讀出,發(fā)生錯誤:
java.io.InvalidClassException: Serial.Serial1; local class incompatible: stream classdesc serialVersionUID = 762508508425139227, local class serialVersionUID = 1187169935661445676
接下來我們加入顯式的聲名UID:
private static final long serialVersionUID=762508508425139227l;
細心的讀者會注意到要保證in.defaultReadObject();能夠順利執(zhí)行,就必須要求serialVersionUID保持一致,所以這里的ver不能夠利用serialVersionUID了。這里的ver是一個我們預先安插好的final long ver=xxxx;并且它不能夠被transient修飾。所以保持向下的兼容性至少有三點要求: