0

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

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

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

4

1 回答 1

0

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

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

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

于 2014-08-16T03:24:05.960 回答