Bor*_*rja 30 android kotlin dagger-2
我的匕首2模块中有以下片段
@Singleton
@Provides
@ElementsIntoSet
fun providesQueries(foo: Foo): Set<Foo>{
val queries = LinkedHashSet<Foo>()
queries.add(foo)
return queries
}
Run Code Online (Sandbox Code Playgroud)
我试着以这种方式注入
@Inject lateinit var foo: Set<Foo>
Run Code Online (Sandbox Code Playgroud)
但是匕首显示一个错误,表示Dagger无法在没有@Provides或@Produces方法的情况下提供java.util.Set.
我在java中也做了同样的工作.有人知道为什么会失败吗?
小智 71
正如它在Kotlin 参考文献中所描述的那样
为了使Kotlin API在Java中工作,我们生
Box<Super>
成为 当它作为参数出现时的Box<? extends Super>
协变定义Box
(或Foo<? super Bar>
用于逆变定义的Foo).
您可以使用@JvmSuppressWildcards
它来避免它,如下所示:
@Inject lateinit var foo: Set<@JvmSuppressWildcards Foo>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3358 次 |
最近记录: |