匕首2@提供罐头和x27;不适用于Kotlin中的静态函数?
我有下面的Java代码,运行良好匕首2@提供罐头和x27;不适用于Kotlin中的静态函数?,kotlin,dagger-2,Kotlin,Dagger 2,我有下面的Java代码,运行良好 @Module(subcomponents = {MainActivityComponent.class}) abstract public class ActivityBuilder { @Provides @Singleton static Context provideContext(Application application) { return application; } @Binds
@Module(subcomponents = {MainActivityComponent.class})
abstract public class ActivityBuilder {
@Provides
@Singleton
static Context provideContext(Application application) {
return application;
}
@Binds
@IntoMap
@ClassKey(MainActivity.class)
abstract AndroidInjector.Factory<?> bindMainActivity(MainActivityComponent.Builder builder);
}
我怎样才能解决这个问题?显然,下面的方法很有效
@Module(subcomponents = [MainActivityComponent::class])
abstract class ActivityBuilder {
@Module
companion object {
@JvmStatic
@Provides
@Singleton
fun provideContext(application: Application): Context {
return application
}
}
@Binds
@IntoMap
@ClassKey(MainActivity::class)
abstract fun bindMainActivity(builder: MainActivityComponent.Builder): AndroidInjector.Factory<*>
}
@模块(子组件=[MainActivityComponent::class])
抽象类ActivityBuilder{
@模块
伴星{
@JvmStatic
@提供
@独生子女
文本(应用程序:应用程序):上下文{
退货申请
}
}
@束缚
@英托马普
@类键(MainActivity::class)
抽象趣味bindMainActivity(生成器:MainActivityComponent.builder):AndroidJector.Factory
}
显然,下面的方法很有效
@Module(subcomponents = [MainActivityComponent::class])
abstract class ActivityBuilder {
@Module
companion object {
@JvmStatic
@Provides
@Singleton
fun provideContext(application: Application): Context {
return application
}
}
@Binds
@IntoMap
@ClassKey(MainActivity::class)
abstract fun bindMainActivity(builder: MainActivityComponent.Builder): AndroidInjector.Factory<*>
}
@模块(子组件=[MainActivityComponent::class])
抽象类ActivityBuilder{
@模块
伴星{
@JvmStatic
@提供
@独生子女
文本(应用程序:应用程序):上下文{
退货申请
}
}
@束缚
@英托马普
@类键(MainActivity::class)
抽象趣味bindMainActivity(生成器:MainActivityComponent.builder):AndroidJector.Factory
}
如果伴星对象上没有@Module,那么伴星对象上就不需要@Module,同样的错误也会发生。我想你需要@JvmStatic
,而不是@Module
,dagger版本2.26你不需要在同伴对象上使用@Module你不需要在同伴对象上使用@Module如果同伴对象上没有@Module,同样的错误会发生。我认为您需要@JvmStatic
,但不需要@Module
,2.26版的dagger不需要在伴生对象上使用@Module
@Module(subcomponents = [MainActivityComponent::class])
abstract class ActivityBuilder {
@Module
companion object {
@JvmStatic
@Provides
@Singleton
fun provideContext(application: Application): Context {
return application
}
}
@Binds
@IntoMap
@ClassKey(MainActivity::class)
abstract fun bindMainActivity(builder: MainActivityComponent.Builder): AndroidInjector.Factory<*>
}