一個(gè)對象序列化的接口,,一個(gè)類只有實(shí)現(xiàn)了Serializable接口,它的對象才是可序列化的,。因此如果要序列化某些類的對象,,這些類就必須實(shí)現(xiàn)Serializable接口。而實(shí)際上,,Serializable是一個(gè)空接口,,沒有什么具體內(nèi)容,它的目的只是簡單的標(biāo)識(shí)一個(gè)類的對象可以被序列化,。
什么情況下需要序列化 a)當(dāng)你想把的內(nèi)存中的對象寫入到硬盤的時(shí)候,; b)當(dāng)你想用套接字在網(wǎng)絡(luò)上傳送對象的時(shí)候; c)當(dāng)你想通過RMI傳輸對象的時(shí)候,; 再稍微解釋一下:a)比如說你的內(nèi)存不夠用了,,那計(jì)算機(jī)就要將內(nèi)存里面的一部分對象暫時(shí)的保存到硬盤中,等到要用的時(shí)候再讀入到內(nèi)存中,,硬盤的那部分存儲(chǔ)空間就是所謂的虛擬內(nèi)存,。在比如過你要將某個(gè)特定的對象保存到文件中,我隔幾天在把它拿出來用,,那么這時(shí)候就要實(shí)現(xiàn)Serializable接口,; b)在進(jìn)行java的Socket編程的時(shí)候,你有時(shí)候可能要傳輸某一類的對象,,那么也就要實(shí)現(xiàn)Serializable接口,;最常見的你傳輸一個(gè)字符串,它是JDK里面的類,,也實(shí)現(xiàn)了Serializable接口,,所以可以在網(wǎng)絡(luò)上傳輸。 c)如果要通過遠(yuǎn)程的方法調(diào)用(RMI)去調(diào)用一個(gè)遠(yuǎn)程對象的方法,,如在計(jì)算機(jī)A中調(diào)用另一臺(tái)計(jì)算機(jī)B的對象的方法,,那么你需要通過JNDI服務(wù)獲取計(jì)算機(jī)B目標(biāo)對象的引用,,將對象從B傳送到A,就需要實(shí)現(xiàn)序列化接口,。 沒有人說的話能全部準(zhǔn)確,,批判性的參考。
|