Guava ForwardingObject、Serializable 和无参数构造函数
Guava ForwardingObject, Serializable and parameterless constructor
来自 guava 的 javadoc ForwardingObject
:
Although this class does not implement Serializable
, a serializable
subclass may be created since this class has a parameter-less
constructor.
为什么 class 需要无参数构造函数才能成为 Serializable
?我是不是误会了什么,或者这只是 javadoc 中的一个错误?
这只是意味着你可以写:
class MyForwardingFoo extends ForwardingObject implements Serializable {
//
}
尽管 ForwardingObject
本身不可序列化,但它仍可序列化;提及空构造函数可能不是最好的措辞,但从语言的角度来看,它是实现可串行化的充分条件。更重要的是 ForwardingObject
本身不包含任何 non-serializable 字段。
来自 guava 的 javadoc ForwardingObject
:
Although this class does not implement
Serializable
, a serializable subclass may be created since this class has a parameter-less constructor.
为什么 class 需要无参数构造函数才能成为 Serializable
?我是不是误会了什么,或者这只是 javadoc 中的一个错误?
这只是意味着你可以写:
class MyForwardingFoo extends ForwardingObject implements Serializable {
//
}
尽管 ForwardingObject
本身不可序列化,但它仍可序列化;提及空构造函数可能不是最好的措辞,但从语言的角度来看,它是实现可串行化的充分条件。更重要的是 ForwardingObject
本身不包含任何 non-serializable 字段。