Spliterator
クラスのソース (JDK 1.8.0_40)では、メソッドを呼び出すだけでなく、直接メソッドを呼び出して が含まれているかどうかを確認することにより、操作対象のインスタンスが特性を持っているかどうかを確認するためのdefault
実装を確認します。ほとんど同じことを行う実装。getExactSizeIfKnown()
SIZED
abstract characteristics()
SIZED
hasCharacteristics(SIZED)
default
getExactSizeIfKnown()
次のように実装されていない理由はありますか:
return !hasCharacteristics(SIZED) ? -1L : estimateSize();
これは私にとってより明確に読み取れ、デフォルトの動作のオーバーライドをより適切に処理しているようです(現在、hasCharacteristics(int)
何か奇妙なものにオーバーライドされている場合、おそらくオーバーライドする必要があるという兆候はありませんgetExactSizeIfKnown()
)?
私がここに欠けているものはありますか?このようなメソッド間でチェックを複製するのはなぜですか?