Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
MongoIterable.forEach
requires a
Block
which is very similar to Java 8
Consumer
.
They are similar enough to cause problems, for example, the following doesn't compile:
MongoIterable<Document> result = collection.find(...);
result.forEach(System.out::println);
because the compiler can't decide between Iterable.forEach( Consumer )
and MongoIterable.forEach( Block )
. Fixing this requires workarounds like explicitly typing the parameter:
Block<Document> printer = System.out::println;
result.forEach(printer);
or alternatively, treating MongoIterable
as a plain Stream
:
StreamSupport.stream(result.spliterator(), false).forEach(System.out::println);
Why is MongoIterable.forEach
not defined using the Consumer
interface, something like: MongoIterable.forEach(Consumer<? super TResult> consumer)
? Even better - why have forEach
in MongoIterable
at all?
–
–
–
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.