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