質問: Button(context) init { button.setOnClickListener(object : View.OnClickListener { override fun onClick(view: View?) { this // これはView.OnClickListener this@Foo // Fooにもアクセスできる } }) button.setOnClickListener { this // これはFooになる // View.OnClickListenerにアクセスする方法が不明!!! } } } ```
回答: こちらの回答によると、Kotlinではラムダはクラスではなく関数として扱われるので、thisによってラムダのインスタンスにアクセスすることはできないというのが仕様のようです。 SAMによる無名クラスへの変換が行われる場合にも、混乱を防ぐために他のラムダと同様にアクセスできなくしているとのことでした。