serialVersionUID是Java中的一個靜態(tài)常量,用于標(biāo)識序列化類的版本號。當(dāng)一個類實(shí)現(xiàn)了Serializable接口,即可將其對象序列化為字節(jié)流保存在文件中或通過網(wǎng)絡(luò)傳輸。在反序列化的過程中,JVM會根據(jù)序列化類的版本號來判斷是否能夠正確地反序列化。如果反序列化時的類版本號與序列化時的版本號不一致,就會拋出InvalidClassException異常。
serialVersionUID的值是一個long型的數(shù)字,默認(rèn)情況下,根據(jù)類的結(jié)構(gòu)自動生成。當(dāng)修改類的結(jié)構(gòu)(增加、刪除、修改字段或方法等)時,serialVersionUID的值也會改變。為了保持兼容性,可以顯式地為serialVersionUID賦一個固定的值,使得即使類的結(jié)構(gòu)發(fā)生變化,它們的serialVersionUID保持一致,從而實(shí)現(xiàn)兼容的序列化和反序列化。