同僚と私には、空のストリーム呼び出しallMatch()が返されるという想定に起因するバグがありましたfalse。
if (myItems.allMatch(i -> i.isValid()) {
//do something
}
もちろん、ドキュメントを想定して読んでいないのは私たちのせいです。しかし、私が理解していないのはallMatch()、空のストリームのデフォルトの動作がなぜ戻るのかということですtrue。これの理由は何でしたか?同様にanyMatch()(逆に偽を返す)、この操作はモナドを出発不可欠な方法で使用され、おそらくで使用if声明。これらの事実を考慮すると、ほとんどの用途でallMatch()デフォルトでtrue空のストリームを使用することが望ましい理由はありますか?


allMatchtrueを返す場合は、そうする必要があると予想されますanyMatch。さらに、空の場合についても、allMatch(...) == noneMatch(...)これも奇妙です。