ここで言うstubとは、Kotlinのstub生成機能で、Pluggable Annotation ProcessingでKotlinのクラスを処理するために必要になってくるもの。コンパイル時にJavaのコンパイル前にKotlinのファイルからJavaのソースコードを生成してstubとして利用する。
当たり前といえば当たり前なんだけど、Kotlin側ではメソッドが作れてしまうのでうっかり作ってしまってハマりそう
@Module object SharedPreferencesModule { @Provides @JvmStatic fun default(context: Context) : SharedPreferences = PreferenceManager.getDefaultSharedPreferences(context) }
これのstubはこうなる(一部省略)
@dagger.Module() public final class SharedPreferencesModule { public static final com.github.takuji31.di.SharedPreferencesModule INSTANCE = null; private SharedPreferencesModule() { super(); } }
何もない😇
↓のようにするとよい
@Module object SharedPreferencesModule { @Provides @JvmStatic fun defaultSharedPreferences(context: Context) : SharedPreferences = PreferenceManager.getDefaultSharedPreferences(context) }
こうなる
@dagger.Module() public final class SharedPreferencesModule { public static final com.github.takuji31.di.SharedPreferencesModule INSTANCE = null; @org.jetbrains.annotations.NotNull() @dagger.Provides() public static final android.content.SharedPreferences defaultSharedPreferences(@org.jetbrains.annotations.NotNull() android.content.Context context) { return null; } private SharedPreferencesModule() { super(); } }