Какие знаешь механизмы создания анонимных объектов в Kotlin

«Какие знаешь механизмы создания анонимных объектов в Kotlin» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В 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++
        }
    })
}