[英]What's the difference between Kotlin object and class in the context of a dagger module
我正在浏览我的一位同事代码库。 我找到了这段代码。
@Module
object SampleAppModule {
@Provides
@JvmStatic
@AppScope
fun provideAppDependency(context: Context): AppDependency = SampleAppDependency(context)
}
这让我想,这和这有什么不同
@Module
class SampleAppModule {
@Provides
@AppScope
fun provideAppDependency(context: Context): AppDependency = SampleAppDependency(context)
}
我最近在匕首模块中看到了 object 的使用,但我自己从未使用过它,因为我不明白它的作用。 很想得到一些见解。
ps 我尝试将 object 更改为 class,并且成功了。 现在真的不知道有没有区别。
使用object
来声明 Dagger 模块只会创建它的一个实例。
如果您的带有@Provides
的模块被声明为class
而不是object
,那么在构建组件时会生成一个额外的 object 。 因此,使用object
可以获得更好的性能。
另一种方法是使用companion object
。 但这不推荐:
除此之外,不要将
companion object
用于模块。 使用object
。 在这种情况下,实例将未被使用,其初始化代码将被 R8 删除,方法将真正为 static,也可以像 Java 一样内联。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.