Java 我使用lambda列出mongodb中的集合索引,但在eclipse中出现了一个错误

Java 我使用lambda列出mongodb中的集合索引,但在eclipse中出现了一个错误,java,mongodb,lambda,java-8,Java,Mongodb,Lambda,Java 8,我只想通过lambda实现块接口的方法apply(Document t),但我在第二行发现了一个错误: MongoCollection cols = db.getCollection("test01"); cols.listIndexes().forEach(t -> System.out.println(t.toJson())); 我已经成功地测试了以下代码,所以我的JDK版本还可以: The method forEach(Block) is ambiguous for the typ

我只想通过lambda实现
接口的方法
apply(Document t)
,但我在第二行发现了一个错误:

MongoCollection cols = db.getCollection("test01");
cols.listIndexes().forEach(t -> System.out.println(t.toJson()));
我已经成功地测试了以下代码,所以我的JDK版本还可以:

The method forEach(Block) is ambiguous for the type ListIndexesIterable

我的lambda语法一定错了,有人能帮我吗。感谢任何人帮助我。

MongoIterable
实现了
Iterable
接口,该接口还具有默认方法
forEach(Consumer)
。因此,您的
消费者
冲突。将显式强制转换添加到块以修复该问题。

MongoIterable
实现了
Iterable
接口,该接口还具有默认方法
forEach(Consumer)
。因此,您的
消费者
冲突。将显式强制转换添加到块以修复此问题。

您的语法很好,但它看起来有2个
forEach
方法。一个来自
Iterable
,它接受一个
消费者
,一个来自
MongoIterable
,它接受一个
,并且您的lambda可以用于实例化这两个

解决方案是用想要的类型“标记”lambda:

new Thread(() -> System.out.println(1111)).start();
cols.listIndexes().forEach((Block)t->System.out.println(t.toJson());

您的语法很好,但它似乎有2个forEach方法。一个来自
Iterable
,它接受一个
消费者
,一个来自
MongoIterable
,它接受一个
,并且您的lambda可以用于实例化这两个

解决方案是用想要的类型“标记”lambda:

new Thread(() -> System.out.println(1111)).start();
cols.listIndexes().forEach((Block)t->System.out.println(t.toJson());

因为方法调用不明确,所以 forEach(块)MongoIterable中forEach(消费者)Iterable中匹配

我刚刚使用mongo drive 3.4.1测试了您的程序,并将代码更改为低于正常运行

cols.listIndexes().forEach((Block<...>) t -> System.out.println(t.toJson()));

cols.listIndexes().forEach((Block因为方法调用不明确,所以
forEach(块)MongoIterable中forEach(消费者)Iterable中匹配

我刚刚使用mongo drive 3.4.1测试了您的程序,并将代码更改为低于正常运行

cols.listIndexes().forEach((Block<...>) t -> System.out.println(t.toJson()));

cols.listIndexes().forEach((Block)即使您在块函数中定义类型为
.forEach((Document t)->System.out.println(t.toJson());
?是的,我得到了另一个错误:与我们共享此错误可能会有所帮助……即使您在块函数中定义类型为
.forEach((Document t)->System.out.println)(t.toJson());
?是的,我遇到了另一个错误:与我们共享此错误可能会有所帮助。。。