1
下面
代码编译的第一次,但未能在第二次构建,并提供:科特林预选赛annotaion被忽略
Error:SomeObject is bound multiple times:
@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
谢谢,现在的问题是为什么'SOURCE' retension在java上工作得很好 – Sigitas