Sobes.tech
Junior

Kas yra 'nullable' tipai Kotlin ir kaip jie veikia?

sobes.tech AI

Atsakymas iš AI

Nullable tipai Kotlin - tai tipai, kurie gali turėti tiek reikšmę, tiek null. Jie aiškiai pažymėti simboliu ? po tipo pavadinimo.

Veikimas grindžiamas Kotlin tipų sistema, kuri užkerta kelią NullPointerException kompiliacijos metu. Kompiliatorius reikalauja aiškios null patikros prieš kreipiantis į nullable tipo narius.

Pagrindiniai būdai saugiai dirbti su nullable tipais:

  • null patikra naudojant if:

    fun printLength(str: String?) {
        if (str != null) {
            println(str.length) // Saugi iškvietimas po `null` patikros
        } else {
            println("Eilutė null")
        }
    }
    
  • Saugus iškvietimo operatorius (?.): Grąžina null, jei objektas null, kitaip – iškvietimo rezultatą.

    val safeLength: Int? = str?.length // Jei str null, safeLength bus null
    
  • Elviso operatorius (?:): Leidžia nurodyti numatytą reikšmę, jei išraiška kairėje yra null.

    val lengthOrDefault: Int = str?.length ?: 0 // Jei str null, lengthOrDefault bus 0
    
  • Aiškus ne-null patvirtinimo operatorius (!!): Paverčia nullable tipą į ne-nullable. Reikia naudoti atsargiai, nes jei reikšmė null, bus išmesta NullPointerException.

    val assertedLength: Int = str!!.length // Jei str null, išmes NPE
    
  • let/run/apply/also funkcijos su saugiu iškvietimu:

    str?.let {
        // Kodas vykdomas tik jei str nėra null
        println("Eilutės ilgis: ${it.length}")
    }
    

Kotlin nullable tipų sistema žymiai didina saugumą ir sumažina NullPointerException atsiradimo tikimybę, palyginti su kalbomis, kur null gali būti priskirtas bet kokiam tipui be aiškios žymėjimo.