Sobes.tech
Junior — Middle

Koja je uloga svojstva 'by lazy' u Kotlinu i u kojim scenarijima je njegovo korišćenje prikladno?

sobes.tech АИ

Одговор од АИ

U Kotlinu, svojstvo s modifikatorom by lazy inicijalizuje se lenjo, što znači da se vrednost računa samo pri prvom pristupu svojstvu, a ne pri kreiranju objekta. Ovo je korisno kada je inicijalizacija zahtevna ili nije uvek potrebna.

Primer upotrebe:

val heavyResource by lazy {
    println("Inicijalizacija")
    "Rezultat"
}

fun main() {
    println("Pre pristupa")
    println(heavyResource) // Ovde se dešava inicijalizacija
    println(heavyResource) // Ne dešava se ponovo inicijalizacija
}

Scenariji upotrebe:

  • Odložena inicijalizacija objekata koji nisu uvek potrebni.
  • Optimizacija performansi.
  • Sigurna inicijalizacija u višestrukim nitima (podrazumevano, lazy je siguran za niti).