gpt4 book ai didi

android - Dagger 2 与 Kotlin 的多重绑定(bind)

转载 作者:IT老高 更新时间:2023-10-28 13:28:01 25 4
gpt4 key购买 nike

我的 dagger 2 模块中有以下代码段

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

我尝试用这种方式注入(inject)

@Inject lateinit var foo: Set<Foo>

但是 dagger 显示一个错误,说 Dagger 不能在没有 @Provides 或 @Produces 方法的情况下提供 java.util.Set。

我在 java 中也做了同样的事情,而且效果很好。有人知道为什么会失败吗?

最佳答案

正如 Kotlin reference 中所述

To make Kotlin APIs work in Java we generate Box<Super> as Box<? extends Super> for covariantly defined Box (or Foo<? super Bar> for contravariantly defined Foo) when it appears as a parameter.

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

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

关于android - Dagger 2 与 Kotlin 的多重绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43141740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com