gpt4 book ai didi

java - 不了解java中序列化的基础知识

转载 作者:搜寻专家 更新时间:2023-11-01 01:21:57 26 4
gpt4 key购买 nike

我无法理解 Java 1.6 中序列化的基础知识。

下面是包含 Collar 类实例变量的 Dog 类:

狗.java

public class Dog implements Serializable {

private Collar collar;

public Collar getCollar() {
return collar;
}

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

}

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

Collar.java

public class Collar {

private int size;

public int getSize() {
return size;
}

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

}

现在,当我尝试序列化 Dog 时,为什么它不抛出 NotSerializableException ?根据契约(Contract),整个对象图应该实现 Serializable,但我的 Collar 类没有实现这一点。

下面是这个demo的主要方法:

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();

请解释一下,我在尝试实现所有理论内容时完全感到困惑:(

最佳答案

可能是因为您的没有项圈!

试试

Dog dog = new Dog();
dog.setCollar(new Collar());

关于java - 不了解java中序列化的基础知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18299799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com