[英]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.