kotlin - kotlin 中的 Dagger 2 静态提供程序方法

标签 kotlin dagger-2

在最新版本的 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_ProvidesAFactoryAModule_Companion_ProvidesAFactory 而不是一个 AModule_ProvidesAFactory 类用于具有对象的情况而不是带有伴生对象的类

关于kotlin - kotlin 中的 Dagger 2 静态提供程序方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44894218/

相关文章:

kotlin - 在Kotlin中使用多变量进行循环

KProperty1.getDelegate 上的泛型过于严格?

Android Dagger 并在任意时刻设置模块

java - 排序和比较两个列表的最短方法

firebase - 删除 LiveData 返回函数内的 Firestore 快照监听器

java - Spring 奇怪地取决于上课地点

android - 预期 @HiltAndroidApp 具有值。您是否忘记应用 Gradle 插件?

java - Dagger 2 Activity 注入(inject)不起作用

android - 使用 Dagger Android 处理器的 kapt 构建失败

java - Dagger 2 最基本的子组件示例不起作用