为什么HashMap中的entryset调用entryset0而不是直接编写
Set <Map.Entry <K, V >> es = entrySet;
! return es = null es: (entrySet = new EntrySet ());在writeObject方法中直接调用entrySet0,是因为entrySet方法可以被覆盖吗?
发布于 2014-08-16 03:24:05
你的解释最有道理。这是为了使HashMap的实现不受在子类型中重写entrySet()方法的人的影响。
我能想到的唯一其他解释是,这是这个类的一些旧版本遗留下来的,我不认为Java开发人员会允许这种情况发生。(这是有很多眼球的代码.)
不管是哪种方式,这对性能都没有影响。JIT编译器可能会内联调用..。除了有一个HashMap子类确实覆盖entrySet()的情况外。
https://stackoverflow.com/questions/25336546
复制相似问题