> Как передаются параметры функции в Kotlin, по ссылке или по значению (Kotlin, Android)

Уровень: senior · Роль: mobile · Категория: Технические вопросы

Компании: Юрент

Стек: Kotlin, Android

> Пример ответа

В Kotlin параметры всегда передаются по значению. Однако важно понимать, что это означает в контексте ссылочных типов.

  • Для примитивных типов (Int, Boolean, Double и т.д.) передаётся копия значения. Изменение параметра внутри функции не влияет на исходную переменную.
  • Для объектов (классов, массивов, списков) передаётся копия ссылки на объект. Сама ссылка передаётся по значению, но обе ссылки (внутри и снаружи функции) указывают на один и тот же объект в памяти. Поэтому изменение полей объекта внутри функции видно снаружи, но переназначение параметра (например, param = null) не повлияет на исходную ссылку.

Пример:

fun modify(value: Int, list: MutableList<Int>) {
    value = 10 // Ошибка компиляции: val нельзя переприсвоить, но если бы можно было, исходная переменная не изменилась бы
    list.add(5) // Изменяет исходный список
    list = mutableListOf(1,2,3) // Ошибка компиляции: val нельзя переприсвоить
}

Итог: Kotlin - строго "передача по значению", но для объектов это значение является ссылкой.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью