java為什么要實現(xiàn)序列化 java中什么類需要序列化?
java中什么類需要序列化?為了方便讀寫,例如將對象寫入文本,必須對其進行序列化。Java對象序列化不僅保留對象的數(shù)據(jù),而且遞歸地保存對象引用的每個對象的數(shù)據(jù)。整個對象層次結(jié)構(gòu)可以寫入字節(jié)流、保存在文
java中什么類需要序列化?
為了方便讀寫,例如將對象寫入文本,必須對其進行序列化。
Java對象序列化不僅保留對象的數(shù)據(jù),而且遞歸地保存對象引用的每個對象的數(shù)據(jù)。整個對象層次結(jié)構(gòu)可以寫入字節(jié)流、保存在文件中或通過網(wǎng)絡(luò)連接傳遞。使用對象序列化,我們可以對對象進行“深度復(fù)制”,即復(fù)制對象本身和被引用對象本身。序列化一個對象可以產(chǎn)生一個完整的對象序列。
為什么網(wǎng)絡(luò)傳輸時對象要序列化,而字符串就不用序列化?
對象序列化可以實現(xiàn)分布式對象。例如,主要應(yīng)用程序RMI使用對象序列化在遠程主機上運行服務(wù),就像在本地主機上運行對象一樣。Rjava對象序列化不僅保存對象的數(shù)據(jù),而且遞歸地保存對象引用的每個對象的數(shù)據(jù)。整個對象層次結(jié)構(gòu)可以寫入字節(jié)流、保存在文件中或通過網(wǎng)絡(luò)連接傳遞。對象序列化可用于“深度復(fù)制”對象本身和引用對象本身。序列化一個對象可以產(chǎn)生一個完整的對象序列。Rjava序列化相對簡單,通常不需要編寫自定義代碼來保存和恢復(fù)對象狀態(tài)。實現(xiàn)java.io.Serializable可序列化接口的類對象可以轉(zhuǎn)換為字節(jié)流或從字節(jié)流中恢復(fù),而無需向類中添加任何代碼。只有在極少數(shù)情況下,才需要自定義代碼來保存或恢復(fù)對象狀態(tài)。注意:不是每個類都可以序列化。某些類無法序列化。例如,涉及線程的類與特定JVM的關(guān)系非常復(fù)雜。