为什么HashMap中的entryset调用entryset0?

时间:2014-08-16 03:01:47

标签: java hashmap entryset

为什么HashMap中的entryset调用entryset0而不是直接写

Set <Map.Entry <K, V >> es = entrySet; 
! return es = null es: (entrySet = new EntrySet ());

在writeObject方法中直接调用entrySet0,是不是因为可以覆盖entrySet方法?

1 个答案:

答案 0 :(得分:0)

你的解释是最合理的。这是为了将HashMap的实现与覆盖子类型中entrySet()方法的人的影响隔离开来。

我能想到的唯一其他解释是,这是从类的一些旧版本遗留下来的,我不希望Java开发人员会在这里发生这种情况。 (这是代码上有很多眼球......)

无论哪种方式,它可能对性能没有任何影响。 JIT编译器可能会内联调用...除非 的子类HashMap覆盖entrySet()