代码之家  ›  专栏  ›  技术社区  ›  capt.swag

在dagger模块的上下文中,Kotlin对象和类之间有什么区别

  •  0
  • capt.swag  · 技术社区  · 4 年前

    @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)
    }
    

    我最近在dagger模块中见过object的用法,但我自己从来没有用过它,因为我不明白它的作用。很想了解一下。

    0 回复  |  直到 4 年前
        1
  •  1
  •   Saurabh Thorat    4 年前

    object

    如果你的模块 @Provides 声明为 class 而不是 ,然后在构建组件时生成一个附加对象。所以使用 对象

    另一种方法是使用 companion object But that is not recommended

    除此之外,不要使用 伴星 对于模块。使用 在这种情况下,实例将不被使用,其初始化代码将 像Java一样内联。