匕首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>