《 Effective Java 》一书和其他资源提供了关于在使用可序列化的 Java 类时如何以及何时使用 readObject()
方法的很好的解释。另一方面, readResolve()
方法仍然有点神秘。基本上我发现的所有文件要么只提到两者之一,要么单独提到两者。
尚未回答的问题是:
- 这两种方法有什么区别?
- 应该在什么时候实施哪种方法?
readResolve()
应该如何使用,尤其是在返回什么方面?
我希望你能对这件事有所了解。
原文由 Forage 发布,翻译遵循 CC BY-SA 4.0 许可协议
readResolve
用于 替换 从流中读取的对象。我见过的唯一用途是强制单身人士;读取对象时,将其替换为单例实例。这确保没有人可以通过序列化和反序列化单例来创建另一个实例。