■オブジェクト式とは
Android開発では再利用しないクラスがよくある。
そういった時に便利なのがオブジェクト式機能
書き方
object{クラス本体}
クラスの継承やインターフェースの実装も可能
object: 親クラス or インターフェイス{クラス本体}
■使い方
リスナクラスで使ったりする。
setOnClickListenerメソッドの中でobject式を利用
View.OnClickListenerインターフェイスを実装している。
▼何故object式を利用するか?
決められたボタンを押した時の処理意外使わないから
btn.setOnClickListener(object: View.OnClickListener {
override fun onClick(view: View) {
ボタンがクリックされた時の処理
}
})
▼SAMインターフェイスとは
View.OnClickListenerインターフェイスのように抽象メソッドを一つしか持たないもの。
抽象メソッドを一つしか持たないインターフェイスをSAMインターフェイスと呼ぶ。
■SAM変換でもっとシンプルに!
オブジェクト式で実装するインターフェイスがSAMインターフェイスの場合
ラムダ式で置き換えて省略してコードをシンプルにできる。
■省略コード
object
SAMインターフェイス: setOnClickListenerで使うSAMインターフェイスは決まっている。推論できる。
override fun onClickメソッド: SAMインターフェイスなので使うメソッドも推論できる。
btn.setOnClickListener({ view: View -> 処理})
■ラムダ式の省略記法を使いもっともっとシンプルに!!!!
▼ラムダ式の省略記法
●引数の型があきらかなら省略可能
●引数を利用しないなら引数そのものを省略可能
●ラムダ式を囲む()を省略可能
btn.setOnClickListener{処理}
よくみる書き方!
これはオブジェクト式を使いSAM変換しラムダ式でここまで省略した姿だったと言う事です!!!!!