2016-05-14 55 views
-1
1) Class A{ 
    string name; 
    long Id; 
    } 
    Class B extends A implements Serializable{ 
    string dept; 
    } 
2)Class A implements Serializable{ 
    string name; 
    long Id; 
    } 
    Class B extends A{ 
    string dept; 
    } 

任何機構可以解釋,哪些對象參數將被序列化?哪些對象參數將被序列化?

+1

爲什麼不序列化他們並找出答案? – David

+1

「對象參數」是什麼意思?此代碼中沒有方法,因此沒有參數。 – SamTebbs33

回答

1

你是不是序列化的任何參數在這裏,反正這一切變量可以被序列化,如果你想有一個變量沒有被序列化,必須把這個聲明爲transient

+0

他意味着領域。你也是如此...... –

0

在第一個例子中,dept場會序列化,但nameid字段不會。

在第二個示例中,所有三個字段都將被序列化。


的Java對象序列化規範的relevant section這樣說:

13)對象的內容寫入流。

a。如果對象是可序列化的,則找到最高的可序列化類。對於那個類和每個派生類,該類的字段被寫入。

請注意,當具有不可序列化超類的對象被反序列化時,將爲最低的不可序列化的超類調用無參數構造函數。當一個對象被重建時,readObject()方法調用無參數構造函數初始化不可序列化的超類。通常,它不能將超類字段恢復到序列化之前的值。請參閱this Q&A

+0

在第一個例子中,dept將被序列化,name和id字段也是派生類的一部分,爲什麼這些字段不會被序列化? – Dasthagiri

+0

這是由我引用給你的規範部分解釋的。基本上,規範說他們沒有序列化。 –