@用AndoridInjector和Kotlin在SubComponent中提供方法

我正在使用Dagger2 AndroidInjector和Kotlin。 我有一个这样定义模块的子组件:

@Subcomponent(modules = arrayOf( UIModule::class, HomeActivitySubcomponent.ComponentModule::class )) interface HomeActivitySubcomponent : AndroidInjector { @Subcomponent.Builder abstract class Builder : AndroidInjector.Builder() @Module abstract class ComponentModule { @Binds @IntoMap @ActivityKey(HomeActivity::class) internal abstract fun bindMainActivityInjectorFactory(builder: Builder): AndroidInjector.Factory } } 

如果这是Java我可以添加一个静态@Provides方法的ComponentModule @Module。 它必须是静态的,因为Dagger抱怨,如果我添加一个非静态方法的@Module类使用@Binds:

错误:@Module可能不包含非静态@Provides方法和抽象@Binds或@Multibinds声明

问题是:如何与Kotlin做到这一点?

我结束了这个:

 @Subcomponent(modules = arrayOf( UIModule::class, HomeActivitySubcomponent.ComponentModuleForProviders::class, HomeActivitySubcomponent.ComponentModule::class )) interface HomeActivitySubcomponent : AndroidInjector { @Subcomponent.Builder abstract class Builder : AndroidInjector.Builder() @Module abstract class ComponentModule { @Suppress("unused") @Binds @IntoMap @ActivityKey(HomeActivity::class) internal abstract fun bindMainActivityInjectorFactory(builder: Builder): AndroidInjector.Factory } @Module open class ComponentModuleForProviders { @Provides open fun provideDrawerPresenter(): DrawerPresenter {...} } } 

所以我使用@Provides方法的第二个@Module类: ComponentModuleForProviders