kotlin限定符注释被忽略
下面的代码编译第一次,但在第二次构建给出:
错误:SomeObject绑定多次:
@Provides @NotNull SomeObject SomeModule.provideSomeObject()
@Provides @NotNull SomeObject SomeModule.provideSomeScopedObject()
看起来,编译器忽略了连续构建中的Qualifier
注释。
当组件和模块在java中被编写时没有帮助,因为在Main
类中注释被忽略。
@dagger.Component(modules = arrayOf(SomeModule::class)) interface Component { fun inject(main: Main) } class Main { @field:[javax.inject.Inject SomeScope] lateinit var obj: SomeObject } @dagger.Module class SomeModule { @dagger.Provides fun provideSomeObject(): SomeObject { return SomeObject("noScope") } @SomeScope @dagger.Provides fun provideSomeScopedObject(): SomeObject { return SomeObject("someScope") } } data class SomeObject(val name: String) @javax.inject.Qualifier @Retention(AnnotationRetention.SOURCE) annotation class SomeScope
请尝试删除这一行@Retention(AnnotationRetention.SOURCE)
。 就我所知,Dagger 2需要RUNTIME
保留(这是Kotlin中的默认保留,因此不需要明确指定)。
- 在RxAndroid用例的演示者中测试什么以及如何测试
- Kotlin:Dagger2 @Inject context var始终为空
- 参数不匹配; SimpleXML的
- 如何在Kotlin中使用Dagger的2 @Named限定符
- 匕首2错误:依赖“不能提供没有@Inject构造函数”
- Kotlin + Dagger – 为ViewModel工厂注入Map
- 如何在AndroidStudio中使用Dagger2和Kotlin在其他项目模块中实现接口库
- Android Dagger 2.11与Kotlin,ContributesAndroidInjector注解问题
- 使用Retrofit 2和Kotlin获取错误的原始HTML / JSON响应