Ответ
В Kotlin можно создавать анонимные объекты с помощью object expressions. Они полезны, когда нужно быстро создать объект интерфейса или абстрактного класса без объявления подкласса.
val listener = object : View.OnClickListener {
override fun onClick(v: View?) {
// обработка клика
}
}
Особенности:
- Могут реализовывать несколько интерфейсов
- Имеют доступ к переменным из окружающей области видимости
- Не являются синглтонами (в отличие от
object declarations) - Часто используются для колбэков и слушателей
Пример с доступом к локальной переменной:
fun initView() {
var clickCount = 0
button.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View?) {
clickCount++
}
})
}