来自 Effective Java 的序列化章节:
如果正在反序列化的对象的类定义了带有正确声明的 readResolve 方法,则在反序列化后新创建的对象上调用此方法。
Effective Java 中提供的示例如下, Javadoc所说的正确格式似乎throws
缺少该部分,即ANY-ACCESS-MODIFIER Object readResolve() throws ObjectStreamException;
// readResolve for instance control - you can do better!
private Object readResolve () {
// Return the one true Elvis and let the garbage collector
// take care of the Elvis impersonator.
return INSTANCE;
}
这里的正确声明是什么意思?如果声明不正确,该类甚至会编译吗?我发现这句话有点令人困惑。