我正在用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
哪个更好?或者哪一个都没问题?或者我应该两个都用,如果是,那么两个都用的原因是什么?
如果将模块声明为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