MongoIterable.forEach
需要一个Block
与Java 8非常相似的东西Consumer
.它们足够相似会导致问题,例如,以下内容无法编译:
MongoIterableresult = collection.find(...); result.forEach(System.out::println);
因为编译器无法在Iterable.forEach( Consumer )
和之间做出决定MongoIterable.forEach( Block )
.修复此问题需要明确键入参数的解决方法:
Blockprinter = System.out::println; result.forEach(printer);
或者,MongoIterable
作为一个平原处理Stream
:
StreamSupport.stream(result.spliterator(), false).forEach(System.out::println);
为什么MongoIterable.forEach
没有使用Consumer
界面定义,例如:MongoIterable.forEach(Consumer super TResult> consumer)
?更好 - 为什么要forEach
进去MongoIterable
呢?