我将按照此guide尝试设置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
,为什么我不能迭代这个列表?
3条答案
按热度按时间1aaf6o9v1#
可以通过强制转换为
Consumer<String>
来帮助编译器解决多义性问题zz2j4svz2#
listDatabaseNames()
公开了不同的forEach
方法。一个方法可以接收Block<? super String> block
作为参数,另一个方法接收Consumer<? super String> consumer
。为了避免这种不明确性,您需要根据需要强制转换。此here还有一个未决问题
vlurs2pr3#
这种模糊性可以通过强制转换为
(Consumer<? super String>)
来解决