在该类的源码(JDK 1.8.0_40)中Spliterator
,default
实现getExactSizeIfKnown()
检查被操作的实例是否具有SIZED
特性,直接调用abstract characteristics()
方法并检查它是否包含SIZED
,而不是只调用调用hasCharacteristics(SIZED)
方法,它有一个default
实现几乎相同的事情。
是否有任何理由getExactSizeIfKnown()
不实施为:
return !hasCharacteristics(SIZED) ? -1L : estimateSize();
这对我来说读起来更清楚,并且似乎可以更好地处理覆盖默认行为(目前,如果hasCharacteristics(int)
被覆盖为奇怪的东西,没有迹象表明getExactSizeIfKnown()
可能也应该被覆盖)?
我在这里缺少什么吗?为什么要在这样的方法之间重复检查?