Sobes.tech
Junior

Šta su 'nullable' tipovi u Kotlinu i kako funkcionišu?

sobes.tech АИ

Одговор од АИ

Nullable tipovi u Kotlinu su tipovi koji mogu sadržavati i vrednost i null. Oni su eksplicitno označeni simbolom ? nakon imena tipa.

Rad se zasniva na sistemu tipova Kotlin-a, koji sprečava NullPointerException tokom kompilacije. Kompajler zahteva eksplicitnu proveru na null pre pristupa članovima nullable objekta.

Glavni načini sigurnog rada sa nullable tipovima su:

  • Provera na null pomoću if:

    fun printLength(str: String?) {
        if (str != null) {
            println(str.length) // Siguran poziv nakon provere null
        } else {
            println("String null")
        }
    }
    
  • Operator sigurnog poziva (?.): Vraća null ako je objekat null, u suprotnom rezultat poziva.

    val safeLength: Int? = str?.length // Ako je str null, safeLength će biti null
    
  • Elvis operator (?:): Omogućava da se obezbedi podrazumevana vrednost u slučaju da je izraz levo od operatora null.

    val lengthOrDefault: Int = str?.length ?: 0 // Ako je str null, lengthOrDefault će biti 0
    
  • Operator eksplicitnog ne-null potvrđivanja (!!): Pretvara nullable tip u non-nullable. Treba ga koristiti oprezno, jer će baciti NullPointerException ako je vrednost null.

    val assertedLength: Int = str!!.length // Bacit će NPE ako je str null
    
  • Funkcije let/run/apply/also sa sigurnim pozivom:

    str?.let {
        // Kod će se izvršiti samo ako str nije null
        println("Dužina stringa: ${it.length}")
    }
    

Sistem nullable tipova u Kotlinu značajno povećava sigurnost i smanjuje verovatnoću pojave NullPointerException u poređenju sa jezicima gde null može biti dodeljen bilo kom tipu bez eksplicitne oznake.