2013-07-04 42 views
3

它被標記爲重複,我正在擴大我的問題。JDK Source中的序列化接口爲空。什麼是實施它的用途

我的問題是如何JDK內部序列化對象。當類實現該接口時,ObjectxxxStreams類如何序列化。

我正在研究序列化主題,深入JDK源代碼。

這是JDK中序列化接口的源代碼。

package java.io; 
public interface Serializable { 
} 

這個界面沒有任何東西。實現這個接口有什麼用處。我知道,爲了序列化一個對象,我們應該實現這個。我知道序列化是什麼以及如何使用它。但是,如何在內部使用ObjectInputStreamObjectOutputStream發生序列化。這些類與序列化有多大關係。或者讓我們保持這兩個班級在履行職責。我所有的問題都是爲什麼我們需要實現這個空接口來序列化和反序列化對象以及它如何在內部工作?請詳細解釋一下。

回答

0

串行化是標記接口

了java.io.Serializable標記接口。它沒有任何成員定義它。當一個java類被序列化時,你應該以某種方式來密切java編譯器,以便有可能序列化這個java類。在這種情況下,使用標記接口。

參考javadocRequirement of the serializable interface

+1

iee它沒有其他功能,除了明確地將類標記爲Serializable。和Clonable相同。 – Kayaman

0

序列化是標記接口,標記接口不具有方法簽名的任何方法,但它的意義,使JVM可以識別它。

0
why we need to implement this empty interface ?? 

Its a design pattern

標記接口模式是計算機科學的設計模式,與使用提供有關對象的運行時類型信息的語言。它提供了一種將元數據與語言不明確支持此類元數據的類相關聯的方法。

0

我們不能說沒有任何方法的接口是標記接口。因爲「標記」這個詞本身就意味着「標記某物」的意思。所以我說,接口(不管是什麼可能是它的內容)通過實現,如果一個類獲得一些額外的或專門的行爲,如允許對象存儲到持久性存儲(可序列化)或允許一個對象使其重複或複製(克隆)或者允許用戶只實現一個方法(如run()),而不是在線程編程的子類(Runnable)中實現近4個t0 5方法。

這些是專門的行爲,它可以通過一個對象獲得,當它實現那些什麼都沒有,但叫做MARKER INTERFACE的接口。

結論

標記接口,可能會或可能不會包含方法...

它也可以被稱爲標記接口,虛擬接口,空接口....

你可以也參考我從SO中找到的自己:

Why Java needs Serializable interface?

相關問題