まずは「Convert Java File to Kotlin」で変換してなんとなくは動いていますが.
一通り公式リファレンスは流し読みしていましたが
コードをみているとKotolinの持つ恩恵を得ているような気がしません.
逆に分かりづらくなったようにも思えたりします.
先人たちのコードを見ながら自然なKotlinコードに書き換えていきましょう.
メンバとコンストラクタ
以下のようなJavaコード.
public class TasksPresenter implements TasksContract.Presenter {
private final TasksRepository mTasksRepository;
private final TasksContract.View mTasksView;
private TasksFilterType mCurrentFiltering = TasksFilterType.ALL_TASKS;
private boolean mFirstLoad = true;
public TasksPresenter(@NonNull TasksRepository tasksRepository, @NonNull TasksContract.View tasksView) {
mTasksRepository = checkNotNull(tasksRepository, "tasksRepository cannot be null");
mTasksView = checkNotNull(tasksView, "tasksView cannot be null!");
mTasksView.setPresenter(this);
}
android-architecture/TasksPresenter.java at todo-mvp · googlesamples/android-architecture
Kotlin のプロパティを使って適切に初期化します. ほとんどのメンバ変数に割り当てられたコンストラクタパラメータは必要ありません.
class TasksPresenter(val tasksRepository: TasksRepository, val tasksView: TasksContract.View)
: TasksContract.Presenter {
override var filtering = TasksFilterType.ALL_TASKS
private var mFirstLoad = true
init {
tasksView.setPresenter(this)
}
主コンストラクタに注釈や可視性修飾子がない場合は、コンストラクタキーワードを省略できます。
Classes and Inheritance - Kotlin Programming Language
Convert Java File to Kotlin の後に その1「メンバとコンストラクタ」
Convert Java File to Kotlin の後に その2 「apply」
Convert Java File to Kotlin の後に その3 「Null Safety」
Convert Java File to Kotlin の後に その4 「lateinit」
Convert Java File to Kotlin の後に その5 「String Templates」