Ben*_*nas 14 java serialization
我想询问实现"Serializable"接口的父节点的子节点是否也实现了"Serializable"接口,或者换句话说,该子节点是否可以被序列化?
Ste*_*n C 22
我想询问实现"Serializable"接口的父节点的子节点是否也实现了"Serializable"接口,或者换句话说,该子节点是否可以被序列化?
第一部分的答案是肯定的.这是Java继承的自然结果.
第二部分的答案是并非总是如此!
考虑一下:
public class Parent implements Serializable {
private int i;
// ...
}
public class Child extends Parent {
private final Thread t = new Thread(); // a non-serializable object
// ...
}
Run Code Online (Sandbox Code Playgroud)
的实例Parent可以被串行化,但实例Child不能......因为它(的属性,其类型Thread)不是可序列化.
(现在,如果t声明为transient,或者如果Child使用默认序列化机制避免,则Child可以序列化.但我的观点是可序列化是一个紧急属性,而不是可继承属性.)
是.如果父实现,Serializable那么任何子类也是Serializable.
static class A implements Serializable {
}
static class B extends A {
}
public static void main(String[] args) {
Serializable b = new B(); // <-- this is a legal statement.
}
Run Code Online (Sandbox Code Playgroud)
B也实现Serializable.
| 归档时间: |
|
| 查看次数: |
12012 次 |
| 最近记录: |