java.util.hashMap 中的初始化方法

init method in java.util.hashMap

在查看 java.util.HashMap 的源代码时,我发现了 init 的声明。

子类的初始化挂钩。在初始化 HashMap 之后但在插入任何条目之前,在所有构造函数和伪构造函数 (clonereadObject) 中调用此方法。 (如果没有此方法,readObject 将需要子类的显式知识。)

void init() {
}

我找到了一个相关问题In Java, is there a legitimate reason to call a non-final method from a class constructor?

但我仍然无法理解 init 的目的是什么以及为什么 readObject 需要子类的显式知识?谁能举例说明一下

正如评论所说,它是子类的初始化挂钩。每个子类都可以适当地重写 init() 以执行每种情况下所需的任何初始化, 不必为反序列化和重新实现 clone() 提供 readObject 的另一个实现] 他们自己。

例如LinkedHashMap中重写init()方法建立链表。想想如果 init() 不可用,反序列化时会发生什么。