我遵循这个指南来尝试建立一个mongoDB数据库。
mongoClient.listDatabaseNames().forEach(System.out::println);不推荐使用getDatabaseNames()并替换它。
但是,这一行会出现以下错误:
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文档声明listDatabaseNames()返回一个ListDatabasesIterable,为什么我不能迭代这个列表?
发布于 2017-12-26 14:38:02
您可以通过转换到Consumer<String>来帮助编译器解决歧义。
mongoClient.listDatabaseNames()
.forEach((Consumer<String>) System.out::println);发布于 2017-12-26 14:41:14
listDatabaseNames()向不同的forEach方法公开。一个可以作为参数Block<? super String> block接收,第二个可以接收Consumer<? super String> consumer。为了避免这种模棱两可的现象,你需要把它投射到你的需要上。
mongoClient1.listDatabaseNames()
.forEach((Block<String>) System.out::println);关于这个这里还有一个悬而未决的问题
https://stackoverflow.com/questions/47979978
复制相似问题