在最新版本的 dagger 2 中,其中一项改进是可以使用静态提供方法。就这么简单:
@Provides
static A providesA() {
return A();
}
我想知道如何在 kotlin 中做到这一点?我试过了
@Module
class AModule {
companion object {
@JvmStatic
@Provides
fun providesA(): A = A()
}
}
但我收到错误消息:
@Provides methods can only be present within a @Module or @ProducerModule
我猜伴随对象在这里发生了一些事情,但是我对 Kotlin 还是很陌生,我不确定如何做到这一点。有没有可能?
谢谢!
最佳答案
虽然我认为 zsmb13 的解决方案更好,但我找到了另一个可行的解决方案
@Module
class AModule {
@Module
companion object {
@JvmStatic
@Provides
fun providesA(): A = A()
}
// add other non-static provides here
}
但是,请注意,将生成两个类:AModule_ProvidesAFactory
和 AModule_Companion_ProvidesAFactory
而不是一个 AModule_ProvidesAFactory
类用于具有对象的情况而不是带有伴生对象的类
关于kotlin - kotlin 中的 Dagger 2 静态提供程序方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44894218/