在Java中列出mongoDB数据库时对forEach的不明确引用

时间:2017-12-26 14:32:21

标签: java mongodb lambda

我跟随此guide尝试设置mongoDB数据库。

query1

mongoClient.listDatabaseNames().forEach(System.out::println); 已弃用并已被替换。

但是这一行会出现以下错误:

getDatabaseNames()

文档说明listDatabaseNames()返回error: reference to forEach is ambiguous mongoClient.listDatabaseNames().forEach(System.out::println); ^ both method forEach(Consumer<? super T>) in Iterable and method forEach(Block<? super TResult>) in MongoIterable match where T,TResult are type-variables: T extends Object declared in interface Iterable TResult extends Object declared in interface MongoIterable ,为什么我不能遍历这个列表呢?

2 个答案:

答案 0 :(得分:4)

您可以通过转换为behave==1.2.6.dev0

来帮助编译器解决歧义
Consumer<String>

答案 1 :(得分:2)

listDatabaseNames()公开了不同的forEach方法。一个人可以收到Block<? super String> block作为参数,第二个收到Consumer<? super String> consumer。 为了避免这种歧义,你需要根据自己的需要进行投射。

  mongoClient1.listDatabaseNames()
              .forEach((Block<String>) System.out::println);

关于此here

还有一个未解决的问题