匕首2与Kotlin的多重绑定

我的匕首2模块中有以下代码片段

@Singleton @Provides @ElementsIntoSet fun providesQueries(foo: Foo): Set<Foo>{ val queries = LinkedHashSet<Foo>() queries.add(foo) return queries } 

我试图用这种方式注入

 @Inject lateinit var foo: Set<Foo> 

但匕首显示一个错误,说匕首不能提供没有@Provides或@Produces方法的java.util.Set。

我在java中做了同样的工作。 有人知道为什么它失败?

正如Kotlin 参考文献所述

为了使Kotlin API在Java中工作,我们生成Box<Super>作为Box<? extends Super> 当它作为一个参数出现时,为协变定义的Box (或Foo<? super Bar>为反义定义的Foo) Box<? extends Super>

您可以使用@JvmSuppressWildcards来避免它,如下所示:

 @Inject lateinit var foo: Set<@JvmSuppressWildcards Foo>