リモートワークももう1か月半ぐらいで、自宅での勤務もだいぶ慣れました。
緊急事態宣言が解除されましたが、僕の現場ではしばらくはリモートワークが続くようです。
さて、今回2回目となる記事ですが、
Kotlinを現場で初めて触りとても感動したので紹介します。
JavaでのAndroid開発経験のみだった人が感動したところを挙げていきます。
※ JavaでAndroid開発を少しでもやったことがある人向けです。
Javaで煩わしかったnullチェックがある程度緩和されて簡潔になっています。
■Java
Hoge hoge = null;
if (hoge != null) {
hoge.doHoge();
}
■Kotlin
var hoge: Hoge? = null
hoge?.doHoge()
hoge?と書くことで、hogeがnullならdoHoge()を実行しません。
■Java
botton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
doSomething();
}
});
■Kotlin
botton.setOnClickListener { doSomething() }
条件はありますが1行で書くことができます。
PHPやJavaScriptにあるような関数型の変数を引数やフィールドとして持てます。
イベント通知用に使っていたリスナーのパターンもかなり簡潔に書けます。
■Java
// イベント通知リスナーのinterface実装
public class Hoge {
public interface OnClickListener {
void onClick();
}
private OnClickListener mListener = null;
public void setOnClickListener(OnClickListener listener) {
mListener = listener;
}
public void doClick() {
if (mListener != null) {
mListener.onClick();
}
}
}
// リスナー実装
Hoge hoge = new Hoge();
hoge.setOnClickListener(new Hoge.OnClickListener() {
@Override
public void onClick() {
doSomething();
}
});
■Kotlin
// コールバックの実装
class Hoge {
var onClick : (() -> Unit)? = null
fun doClick() {
onClick?.invoke()
}
}
// 関数オブジェクトの実装
val hoge = Hoge()
hoge.onClick = {
doSomething()
}
onClickを関数オブジェクトとして宣言することでイベント通知処理もすっきり。
記事が長くなって紹介しきれなかったので続くかも
参考:https://qiita.com/RyotaMurohoshi/items/01b370f34a4bf96f5c39