Со всеми известными однофункциональными слушателями мы можем использовать более простую лямбда-нотацию
view.setOnClickListener { do() }
вместо оригинального, более длинного Java-способа
view.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View?) {
do()
}
})
Но что именноделает эту работу?Я пытался сделать то же самое с моим собственным слушателем:
private var listener: OnCopyPasteClickListener? = null
interface OnCopyPasteClickListener {
fun onPasteClick(text: String)
}
fun setOnCopyPasteClickListener(onCopyPasteClickListener: OnCopyPasteClickListener) {
listener = onCopyPasteClickListener
}
, и хотя длинный подход работает просто отлично:
copypaste.setOnCopyPasteClickListener(object : CopyPasteMenu.OnCopyPasteClickListener {
override fun onPasteClick(text: String) {
do(text)
}
})
Я не могу заставить его принять короткий:
copypaste.setOnCopyPasteClickListener {
do(it)
}
В среде IDE выдается ошибка несоответствия типов.