gpt4 book ai didi

java - 在 MongoDB 中的文档上使用 forEach

转载 作者:行者123 更新时间:2023-12-02 02:48:49 26 4
gpt4 key购买 nike

我正在关注this 。我无法理解为什么以下内容意味着以 JSON 格式打印每个文档。这就是 forEach 的工作原理以及为什么为每个 Document

运行方法名称 apply 的原因
Block<Document> printBlock = new Block<Document>() {
@Override
public void apply(final Document document) {
System.out.println(document.toJson());
}
};

collection.find(new Document()).forEach(printBlock);

最佳答案

这是因为find操作返回 MongoIterable已声明 forEach java-7 的方法 Iterable它根本没有 forEach 方法。

所以你可以调用forEach MongoIterable 上的方法就像你的问题一样。在java8中,Iterable包括forEach(Consumer)手术。如果您在 java8 中将 forEach 与内联 Lambda 表达式或方法引用异常一起使用,则必须将 lambda 强制转换为显式目标类型,例如:

collection.find(new Document())
.forEach( it-> System.out.println(it.toJson())); // compile-error

// worked with inlined lambda expression
collection.find(new Document())
.forEach((Consumer<Document>) it -> System.out.println(it.toJson()));


collection.find(new Document())
.forEach((Block<Document>) it -> System.out.println(it.toJson()));

// worked with method reference expression
collection.find(new Document())
.forEach((Consumer<Document>) printBlock::apply);

collection.find(new Document())
.forEach((Block<Document>) printBlock::apply);

有关 lambda 表达式的更多详细信息,您可以查看 here .

关于java - 在 MongoDB 中的文档上使用 forEach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57123367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com