gpt4 book ai didi

android - Dagger2 Qualifier 不适用于 Kotlin?

转载 作者:行者123 更新时间:2023-11-29 02:33:06 25 4
gpt4 key购买 nike

我有一个简单的类如下

class MainString(val msg: String)

我想用不同的参数注入(inject)它,所以我按照 https://google.github.io/dagger/users-guide 中显示的指南使用 @Named 限定符

我的 AppModule 有

@Provides @Named("Two")
fun provideTwoMainString(): MainString {
return MainString("Two")
}

@Provides @Named("One")
fun provideOneMainString(): MainString {
return MainString("One")
}

在我的 MainActivity 中,我只是调用

@Inject @Named("One")
lateinit var stringOne: MainString

@Inject @Named("Two")
lateinit var stringTwo: MainString

但是,当我编译时,它会提示

Error:(11, 1) error: com.elyeproj.demo_dagger_scope.MainString cannot be provided without an @Inject constructor or from an @Provides- or @Produces-annotated method.

好像是要我再提供一个没有限定词的Provider。因此,如果我添加以下内容,所有内容都会编译。但这对我来说不习惯,因为我想要不同的参数注入(inject)。

@Provides
fun provideMainString(): MainString {
return MainString("Solo")
}

我做错了什么?

最佳答案

注解在 kotlin 上的工作略有不同。看this doc

您必须将该字段注释为:

@Inject @field:Named("Two")
lateinit var stringOne: MainString

关于android - Dagger2 Qualifier 不适用于 Kotlin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48549260/

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