这是在我编写 custom 时出现的Spliterator。我知道estimateSize如果我知道大小,甚至是近似值,我应该覆盖。通常,我会这样做。但是有getExactSizeIfKnown,我知道它是默认实现:
default long getExactSizeIfKnown() {
return (characteristics() & SIZED) == 0 ? -1L : estimateSize();
}
现在,假设我正在研究一个ArrayListSpliterator(我知道它已经存在,这不是重点)。我应该覆盖getExactSizeIfKnown还是estimateSize两者兼而有之?
在内部,我猜getExactSizeIfKnown实际上是被调用的,而不是 estimateSize- 因为第一个委托给第二个。考虑到理论上我正在研究一个ArrayListSpliterator,实际上不会覆盖getExactSizeIfKnown只是让我支付一个额外的方法调用 - 绕道getExactSizeIfKnown- > estimateSize?