Был ли опыт работы с ссылками в Kotlin

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

Ответ

В Kotlin есть два типа ссылок:

  1. Strong references – обычные ссылки, удерживающие объект в памяти
  2. Weak/Soft references – из пакета java.lang.ref, позволяют GC собирать объекты

Пример с WeakReference:

val obj = Any()
val weakRef = WeakReference(obj)
// После GC weakRef.get() может вернуть null

Особенности:

  • WeakReference полезны для кешей, чтобы избежать утечек памяти
  • SoftReference реже очищаются GC чем Weak
  • Для работы с ссылками в Android часто используют WeakHashMap

Пример с WeakProperty:

var heavyObject by Weak() // делегат из kotlin.properties