У нас с коллегой возникла ошибка, связанная с нашим предположением, что вызов пустого потока allMatch()вернется false.
if (myItems.allMatch(i -> i.isValid()) {
//do something
}
Конечно, это отчасти наша вина, если мы предполагаем, а не читаем документацию. Но я не понимаю, почему allMatch()возвращается поведение по умолчанию для пустого потока true. Что послужило причиной этого? Подобно anyMatch()операции (которая, наоборот, возвращает false), эта операция используется императивным способом, который отходит от монады и, вероятно, используется в ifоператоре. Учитывая эти факты, есть ли причина, по которой для большинства применений желательно использовать по allMatch()умолчанию trueпустой поток?


allMatchвернет true, то так и должно бытьanyMatch. Вдобавок для пустого корпуса,allMatch(...) == noneMatch(...)что тоже странно.