【发布时间】:2016-04-26 21:13:48
【问题描述】:
下面的代码第一次编译,但在第二次构建失败:
错误: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
【问题讨论】: