Kotlin - Interfaceの名前被りについて
上のコードは、Androidでよく見るようなCallbackインタフェースを実装してるサンプルコードです。
本を選択するダイアログにonClickがあり、購入処理をするダイアログのコールバックもonClickだった場合、実装する側はonClick()をoverrideするので、どっちから呼ばれているのかはわかりません。
実装してる側はそう言うことを意識せずに実装しますし、Interface側ももちろん、そう言うことを意識せずに実装するのでバグが発生してしまいます。
ここらへん、ついついonClick()のような名前をInterfaceを実装してる時にはつけてしまうので、なんとか対応策あるかなーとググってはみたものの特には無さそうでした。
冗長ですけど、やはり固有な名前にしてあげるのがいいんですかね。そもそも、onClick()だけだと実装側は何の値がくるのか予想もできないので良くない気がしますね🤔
ちなみに。。
親が同じ名前の関数でsuperで呼び出す場合、これは流石にコンパイルエラーになります。同じ名前の実装があるのでどちらを呼べばいいかわからないからですね。
その場合は、super<T>.関数()の形式で明示的に親を指定して呼び出すみたいです。この書き方は初めて知りました。
この記事が気に入ったらサポートをしてみませんか?