java中序列化的基础知识不明白

Who*_*AmI 4 java serialization servlets web-applications serializable

我无法理解SerializationJava 1.6 的基础知识.

下面是Dog包含Class的实例变量的CollarClass:

Dog.java

public class Dog implements Serializable {

private Collar collar;

public Collar getCollar() {
    return collar;
}

public void setCollar(Collar collar) {
    this.collar = collar;
}

}
Run Code Online (Sandbox Code Playgroud)

Collar类没有实现Serializable接口,如下所示:

Collar.java

public class Collar {

private int size;

public int getSize() {
    return size;
}

public void setSize(int size) {
    this.size = size;
}

}
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试序列化时,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();
Run Code Online (Sandbox Code Playgroud)

请解释一下,在尝试实施所有理论上的东西时,我完全感到困惑:(

ada*_*shr 9

可能是因为你dog没有collar!

试试吧

Dog dog = new Dog();
dog.setCollar(new Collar());
Run Code Online (Sandbox Code Playgroud)