目次
C#でいうところの、Func
やdelegate
の機能をさしています。
Kotlinでは、delegate
というと別とまではならないものの、想像している機能と違う機能が出てくるので、注意が必要です。
二つの言語に共通しているこの機能のようのものを表している単語は、関数オブジェクト
になるかと思います。
イベントリスナの基本
イベントリスナとは、イベントが発生したときに呼ばれるメソッドを持つクラスのことをさします。
このイベントリスナークラスを外部から設定することができるようになっていることで、イベントを呼び出す側は、実際の処理と汎用的な処理を分離して記述できるようになります。
実装例
この実装例では、Kotlin(Android)を例としています。onCreate
メソッドがエントリーポイントだと考えてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| interface Itest{ fun Test1() fun Test2() }
class Test {
var action:Itest? = null
fun CallTest1(){ action?.Test1() }
fun CallTest2(){ action?.Test2() } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main)
test = Test()
test.action = object: Itest{ override fun Test1() { Log.d("Test","テスト1が呼ばれました") }
override fun Test2() { Log.d("Test","テスト2が呼ばれました") } }
test.CallTest1() }
|
c++ 実行結果test1 2
| + int main(){ - int main()
|
c++ 実行結果test1 2
| + int main(){ - int main()
|