Dagger2: 2.26時点でのKotlinサポート状況

Daggerの2.25から少しずつKotlin向けの対応が入っています。

この記事ではそれらについて紹介していきます。

objectクラスにJvmStaticが必須ではなくなった

2.25から入った変更です。

@Module
object AppModule {
  @JvmStatic // JvmStaticの指定が必須だった
  @Provides
  fun provideFuga(): Fuga = Fuga()
}

@Module
object AppModule {
  @Provides
  fun provideFuga(): Fuga = Fuga()
}

Qualifierを使うときに、fieldの指定がいらなくなった

これも2.25から入った変更です。

@Inject
@field:HogeQualifier // @field:の指定が必須だった
lateinit var namedObject: NamedObject

@Inject
@HogeQualifier
lateinit var namedObject: NamedObject

companion objectにModuleをつけなくて良くなった

これは2.26から入った変更です。

@Module
interface MainActivityModule {
  @Module // 必須だった
  companion object {
    @JvmStatic // 必須だった
    @Provides
    fun provideTestHoge(): TestHoge = TestHoge()
  }
}

@Module
interface MainActivityModule {
  companion object {
    @Provides
    fun provideTestHoge(): TestHoge = TestHoge()
  }
}

まとめ

ハマりがちだった部分が少しずつ解消されていく😊

Written by
あんどろいどでぃべろっぱぁー🍎