[英]init method in java.util.hashMap
当我浏览java.util.HashMap
的源代码时,我发现了init
声明。
子类的初始化挂钩。 在初始化HashMap
之后但在插入任何条目之前,将在所有构造函数和伪构造函数( clone
, readObject
)中调用此方法。 (在缺少此方法的情况下, readObject
将需要明确了解子类。)
void init() {
}
我在Java中发现了一个相关问题,是否有合理的理由从类构造函数中调用非最终方法?
但是我仍然无法理解init的目的,为什么readObject
需要显式的子类知识? 任何人都可以举例说明
就像评论所说,这是子类的初始化钩子。 每个子类都可以适当地重写init()
来执行每种情况下所需的任何初始化, 而不必为反序列化和重新实现clone()
本身提供readObject
另一种实现。
例如,在LinkedHashMap
,将重写init()
方法以建立链接列表。 想想如果init()
不可用时反序列化时会发生什么情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.