我無法理解Java 1.6中Serialization
的基本知識。Java中的序列化基礎知識不明白
下面是含有Collar
類的一個實例變量的Dog
類別:
Dog.java
public class Dog implements Serializable {
private Collar collar;
public Collar getCollar() {
return collar;
}
public void setCollar(Collar collar) {
this.collar = collar;
}
}
套環類不實現Serializable
接口,如下所示:
Collar.java
public class Collar {
private int size;
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
}
現在,當我試圖序列化Dog
那麼爲什麼它不會拋出NotSerializableException
?根據合同,整個對象圖應該實現Serializable
,但是我的Collar
類不能滿足這個要求。
下面是這個演示的主要方法:
public static void main(String[] args) {
try {
FileOutputStream fs = new FileOutputStream("E:\\test.ser");
ObjectOutputStream os = new ObjectOutputStream(fs);
Dog dog = new Dog();
// No exception thrown here, WHY?
// test.ser file is getting created properly.
os.writeObject(dog);
FileInputStream fis = new FileInputStream("E:\\test.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
Dog dog1 = (Dog)ois.readObject();
// Here I am getting a null Collar object
Collar c1 = dog1.getCollar();
請解釋這一點,我完全糊塗了,而試圖實現所有的理論東西:(
請在讀取文件之前添加這些行'outputStream.flush();''outputStream.close();'然後回報您的發現 – Multithreader
您自己說過:整個* object graph *必須是可序列化的,而不是你的代碼碰巧提到的所有類。 –
@Multithreader如果我添加上面提到的兩行,沒有區別 – WhoAmI