java.util.hashMap 中的初始化方法
init method in java.util.hashMap
在查看 java.util.HashMap
的源代码时,我发现了 init
的声明。
子类的初始化挂钩。在初始化 HashMap
之后但在插入任何条目之前,在所有构造函数和伪构造函数 (clone
、readObject
) 中调用此方法。 (如果没有此方法,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()
不可用,反序列化时会发生什么。
在查看 java.util.HashMap
的源代码时,我发现了 init
的声明。
子类的初始化挂钩。在初始化 HashMap
之后但在插入任何条目之前,在所有构造函数和伪构造函数 (clone
、readObject
) 中调用此方法。 (如果没有此方法,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()
不可用,反序列化时会发生什么。