Mój kolega i ja mieliśmy błąd, który wynikał z naszego założenia, że wywołanie pustego strumienia allMatch()powróci false.
if (myItems.allMatch(i -> i.isValid()) {
//do something
}
Oczywiście to trochę nasza wina, że przyjmujemy i nie czytamy dokumentacji. Ale nie rozumiem, dlaczego allMatch()powraca domyślne zachowanie pustego strumienia true. Jaki był tego powód? Podobnie jak anyMatch()(które odwrotnie zwraca false), operacja ta jest używana w sposób imperatywny, który odchodzi od monady i prawdopodobnie jest używany w ifinstrukcji. Biorąc pod uwagę te fakty, czy jest jakikolwiek powód, dla którego allMatch()domyślne ustawienie truepustego strumienia byłoby pożądane w większości zastosowań?


allMatchzwraca prawdę, to powinnoanyMatch. Dodatkowo dla pustej obudowy,allMatch(...) == noneMatch(...)co też jest dziwne.