まずは「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」