繁体   English   中英

java.util.hashMap中的init方法

[英]init method in java.util.hashMap

当我浏览java.util.HashMap的源代码时,我发现了init声明。

子类的初始化挂钩。 在初始化HashMap之后但在插入任何条目之前,将在所有构造函数和伪构造函数( clonereadObject )中调用此方法。 (在缺少此方法的情况下, readObject将需要明确了解子类。)

void init() {
}

在Java中发现了一个相关问题,是否有合理的理由从类构造函数中调用非最终方法?

但是我仍然无法理解init的目的,为什么readObject需要显式的子类知识? 任何人都可以举例说明

就像评论所说,这是子类的初始化钩子。 每个子类都可以适当地重写init()来执行每种情况下所需的任何初始化, 不必为反序列化和重新实现clone()本身提供readObject另一种实现。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM