gpt4 book ai didi

java - "Serializable"类的子类自动为 "Serializable"吗?

转载 作者:搜寻专家 更新时间:2023-10-30 20:59:38 24 4
gpt4 key购买 nike

实现了Serializable接口(interface)的类的子类是否也实现了Serializable?也就是说子类的实例也可以序列化吗?

最佳答案

I wanted to ask whether the child of the parent, which implements "Serializable" interface, implements "Serializable" interface too, or in other words can that child be serialized?

第一部分的答案是肯定的。这是 Java 继承的自然结果。

第二部分(“换句话说……”)的答案是 Not Always1!

考虑一下:

public class Parent implements Serializable {
private int i;
// ...
}

public class Child extends Parent {
private Thread t = new Thread(); // a non-serializable object
// ...
}

Parent 的实例可以被序列化,但是 Child 的实例不能......因为它有一个类型为 (Thread ) 没有实现 Serializable。如果您尝试使用非空 t 字段序列化 Child 实例,您将得到一个异常。

现在如果 t 被声明为 transient,或者如果 Child 避免使用默认的序列化机制,Child可以做成可序列化的。但我的观点是,可串行化是一种涌现的属性,而不是一种可继承的属性。


1 - 这与 javadocs 所说的无关!

关于java - "Serializable"类的子类自动为 "Serializable"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25666385/

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