> Что такое contracts в Kotlin и когда их используют? (Kotlin, Android)
Уровень: junior · Роль: mobile · Категория: Технические вопросы
Компании: Альфа-банк
Стек: Kotlin, Android
> Пример ответа
Contracts в Kotlin - это механизм, позволяющий разработчику явно описывать поведение функций для компилятора, улучшая вывод типов и статический анализ кода. Они объявляются с помощью аннотации @ContractsDsl и функций contract { ... } внутри тела функции. Основное назначение - сообщить компилятору о гарантиях, которые неочевидны из сигнатуры: например, что функция вернет null только при определенном условии, или что после её вызова переменная будет инициализирована.
Пример использования - умные приведения (smart casts) в when или if:
fun String?.isNotNull(): Boolean { contract { returns(true) implies (this@isNotNull != null) } return this != null } fun example(s: String?) { if (s.isNotNull()) { // Компилятор знает, что s не null, благодаря контракту println(s.length) } }
На Android contracts применяются для улучшения работы с nullable типами, например, в кастомных проверках или в функциях-расширениях для View (проверка видимости). Они также полезны в DSL-построителях, где нужно гарантировать инициализацию свойств. Однако стоит помнить, что contracts - это экспериментальная фича (начиная с Kotlin 1.3), и их злоупотребление может усложнить код. Используйте их только когда стандартные средства (например, requireNotNull) недостаточны.
> Похожие задачи по mobile
Что такое Coroutine Builders в Kotlin
Как проверить тип параметра в обобщённом методе Kotlin
Можно ли изменить значение val в дата классе через рефлексию
В каких случаях использовать модификаторы in и out в дженериках Kotlin
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью