Что можно добавить с помощью extensions

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

Ответ

Kotlin extensions позволяют добавлять новые функции/свойства к существующим классам без наследования.

Что можно добавить:

  • Функции (fun Any.toast())
  • Свойства (val View.isVisible)
  • Компаньон-объекты (fun MyClass.Companion.create())
  • Операторы (operator fun Point.plus())

Пример:

// Расширение для View
fun View.show() { visibility = View.VISIBLE }

// Использование
myView.show()

Ограничения:

  • Нельзя добавить поле в класс (только computed property)
  • Не переопределяют существующие методы
  • При конфликте имен приоритет у оригинального метода класса