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