当前位置: 首页 > 知识库问答 >
问题:

dagger模块类提供者函数的注释

史旺
2023-03-14

我正在用Kotlin和Dagger 2开发一个Android项目。我有一个NetworkModule,我在其中定义了一些提供程序函数。

@Module
object NetworkModule {
   @Provides
   @JvmStatic  // Here uses @JvmStatic
   internal fun provideSomething(): Something {
      ...
   }
}

我看到有些人使用kotlin@jvmstatic,有些人使用Dagger的@reusable来注释提供者函数:

@Module
object NetworkModule {
   @Provides
   @Reusable  // Here uses @Reusable
   internal fun provideSomething(): Something {
      ...
   }
}
@Module
object NetworkModule {
   @Provides
   @JvmStatic // Here use both @JvmStatic
   @Reusable  // and uses @Reusable
   internal fun provideSomething(): Something {
      ...
   }
}

>

  • 注释@jvmstatic和/或@reusable的动机是什么?背后的原因是什么,或者这样做的好处是什么?

    使用@jvmstatic@reusable哪个更好?或者哪一个都没问题?或者我应该两个都用,如果是,那么两个都用的原因是什么?

  • 共有1个答案

    徐秋月
    2023-03-14

    如果将模块声明为Kotlin对象,则需要@jvmstatic。Dagger2.25删除了该限制,您也可以查看此问题以获得更多信息。

    如果使用Dagger2.25或更新版本,就没有理由再使用@jvmstatic了。

    @reusable文档中:

    @jvmstatic@reusable彼此无关,根据您的需要,您可以使用其中一个、另一个或两者兼而有之。

     类似资料:
    • 我正在尝试试驾我正在对我的Android服务进行的一系列更改()-我正在使用Dagger和Robolectric,我需要用一些模拟来替换服务中的字段注入类,以缩小测试范围…使它(稍微)更像“单元”。 我在我的中插入

    • 在dagger 2的最新版本中,一个改进是拥有静态提供方法的可能性。简单来说: 我想知道如何在kotlin中做到这一点?我试过了。 但我收到错误消息: 我猜伴随对象发生了一些事情,但是我对静态编程语言很陌生,我不确定如何做到这一点。这可能吗? 谢谢!

    • null 如果有人能给我指明正确的方向,我将不胜感激。 提前道谢!

    • 随着@provides方法变得更加复杂,可以使用Provider接口将这些方法移动到单独的类中。 class SpellCheckerProvider implements Provider<SpellChecker> { @Override public SpellChecker get() { String dbUrl = "jdbc:mysql://localhost

    • 在 Pagination 和 Sorting 部分, 我们已经介绍了如何允许终端用户选择一个特定的数据页面,根据一些字段对它们进行展现与排序。 因为分页和排序数据的任务是很常见的,所以Yii提供了一组封装好的data provider类。 数据提供者是一个实现了 yii\data\DataProviderInterface 接口的类。 它主要用于获取分页和数据排序。它经常用在 data widge