1蒲凶、簡介
1.1、英語注釋
Serializability of a class is enabled by the class implementing the
java.io.Serializable interface. Classes that do not implement this
interface will not have any of their state serialized or
deserialized. All subtypes of a serializable class are themselves
serializable. The serialization interface has no methods or fields
and serves only to identify the semantics of being serializable.
1.2拆内、中國話
序列化的類需要實(shí)現(xiàn)Serializable 接口旋圆,沒有實(shí)現(xiàn)該接口的類并不會(huì)有序列化和反序列化的任何一種狀態(tài)。實(shí)現(xiàn)了序列化接口的子類都有可序列化的特點(diǎn)(有序列化和反序列化的狀態(tài))矛纹。序列化接口沒有任何方法和屬性臂聋,實(shí)現(xiàn)該接口僅僅是為了在語義上標(biāo)記該類已經(jīng)被序列化了。
2或南、代碼
package java.io;
public interface Serializable {
}
注意以下幾點(diǎn):
1孩等、若繼承的父類沒有實(shí)現(xiàn)Serializable接口,但是又想讓子類可序列化采够,子類實(shí)現(xiàn)Serializable接口肄方,子類必須有可訪問的無參構(gòu)造方法,用于保存和恢復(fù)父類的public或protected或同包下的package字段的狀態(tài)蹬癌,否則在序列化或反序列化時(shí)會(huì)拋出RuntimeException異常权她,對于序列化后的子類,在進(jìn)行反序列化時(shí)逝薪,理論上無法初始化父類中private(不可訪問)對象變量的狀態(tài)或值隅要。
2、在對可序列化類中的屬性進(jìn)行序列化時(shí)董济,如果遇到不可序列化的對象變量步清,此時(shí)會(huì)針對不可序列化的類拋出NotSerializableException異常
3、對于可序列化的非數(shù)組類虏肾,強(qiáng)烈建議顯示聲明static型廓啊、long型、final型serialVersionUID字段用于標(biāo)識當(dāng)前序列化類的版本號封豪,否則在跨操作系統(tǒng)谴轮、跨編譯器之間進(jìn)行序列化和反序列化時(shí)容易出現(xiàn)InvalidClassException異常