Java 我使用lambda列出mongodb中的集合索引,但在eclipse中出现了一个错误
我只想通过lambda实现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
块
接口的方法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());
?是的,我遇到了另一个错误:与我们共享此错误可能会有所帮助。。。