在存儲的時候,把字節(jié)轉(zhuǎn)換成對象教序列化的使用。如果想把字節(jié)換回來,就要運(yùn)用到反序列化的概念。IO流中的序列化用于處理字節(jié)序列的問題,需要我們先對IO流序列化的概念、圖解、使用場景進(jìn)行了解,在了解基本概念后,我們進(jìn)一步學(xué)習(xí)java IO流序列化的構(gòu)造方法。
1.概念
Java 提供了一種對象序列化的機(jī)制,用一個字節(jié)序列可以表示一個對象,該字節(jié)序列包含該對象的數(shù)據(jù)、對象的類型和對象中存儲的屬性等信息。字節(jié)序列寫出到文件之后,相當(dāng)于文件中 持久保存了一個對象的信息。反之,該字節(jié)序列還可以從文件中讀取回來,重構(gòu)對象,對它進(jìn)行 反序列化。對象的數(shù)據(jù)、對象的類型和對象中存儲的數(shù)據(jù)信息,都可以用來在內(nèi)存中創(chuàng)建對象。
2.圖解
3.使用場景
(1)所有需要網(wǎng)絡(luò)傳輸?shù)膶ο蠖夹枰獙?shí)現(xiàn)序列化接口,通過建議所有的javaBean都實(shí)現(xiàn)Serializable接口。
(2)對象的類名、實(shí)例變量(包括基本類型,數(shù)組,對其他對象的引用)都會被序列化;方法、類變量、transient實(shí)例變量都不會被序列化。
(3)如果想讓某個變量不被序列化,使用transient修飾。序列化對象的引用類型成員變量,也必須是可序列化的,否則,會報(bào)錯。
(4)反序列化時必須有序列化對象的class文件。
(5)當(dāng)通過文件、網(wǎng)絡(luò)來讀取序列化后的對象時,必須按照實(shí)際寫入的順序讀取。
(6)單例類序列化,需要重寫readResolve()方法;否則會破壞單例原則。
(7)同一對象序列化多次,只有第一次序列化為二進(jìn)制流,以后都只是保存序列化編號,不會重復(fù)序列化。
(8)建議所有可序列化的類加上serialVersionUID 版本號,方便項(xiàng)目升級。
4.構(gòu)造方法
以上就是java IO流序列化的概念學(xué)習(xí),可以用于字符與對象的轉(zhuǎn)換,在用法上有序列化和反序列化兩種,想要學(xué)習(xí)的可以在課后找資料了解。更多關(guān)于“Java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗(yàn),課程大綱更科學(xué)更專業(yè),有針對零基礎(chǔ)的就業(yè)班,有針對想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實(shí)現(xiàn)java程序員夢想。