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