Dagger2限定符不能与Kotlin一起使用?
我有一个简单的类如下
class MainString(val msg: String)
我想注入不同的参数,所以我使用@Named
限定符根据https://google.github.io/dagger/users-guide
与我的AppModule有
@Provides @Named("Two") fun provideTwoMainString(): MainString { return MainString("Two") } @Provides @Named("One") fun provideOneMainString(): MainString { return MainString("One") }
在我的主动活动中,我只是打电话
@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.
似乎想要我提供没有限定符的另一个提供程序。 所以,如果我添加下面,所有将编译。 但这不是我习惯的,因为我想要有不同的论点注入。
@Provides fun provideMainString(): MainString { return MainString("Solo") }
我做错了什么?
kotlin的注释工作略有不同。 看这个文件
您必须注释该字段为:
@Inject @field:Named("Two") lateinit var stringOne: MainString