Sobes.tech
Junior

Mi az a 'nullable' típus Kotlinben, és hogyan működik?

sobes.tech MI

Válasz az MI-től

A Kotlinben a nullable típusok olyan típusok, amelyek értéket vagy null-t tartalmazhatnak. Ezeket kifejezetten a típus neve után írt ? szimbólummal jelöljük.

A működés a Kotlin típus rendszerén alapul, amely megakadályozza a NullPointerException-t fordítási időben. A fordító explicit null ellenőrzést követel meg, mielőtt hozzáférne egy nullable típusú objektum tagjaihoz.

A nullable típusok biztonságos kezelésének fő módszerei:

  • null ellenőrzése if-vel:

    fun printLength(str: String?) {
        if (str != null) {
            println(str.length) // Biztonságos hívás null ellenőrzés után
        } else {
            println("String null")
        }
    }
    
  • Biztonságos hívás operátor (?.): Visszaadja a null-t, ha az objektum null, különben a hívás eredményét.

    val safeLength: Int? = str?.length // Ha str null, safeLength null lesz
    
  • Elvis operátor (?:): Alapértelmezett értéket ad, ha a bal oldali kifejezés null.

    val lengthOrDefault: Int = str?.length ?: 0 // Ha str null, akkor 0
    
  • Explicit nem-null állítás operátor (!!): Nullable típust nem-null típusra alakít. Óvatosan kell használni, mert null érték esetén NullPointerException-t dob.

    val assertedLength: Int = str!!.length // Dob NPE-t, ha str null
    
  • let/run/apply/also funkciók biztonságos hívással:

    str?.let {
        // Csak akkor fut le, ha str nem null
        println("A szöveg hossza: ${it.length}")
    }
    

A Kotlin nullable típus rendszere jelentősen növeli a biztonságot, és csökkenti a NullPointerException előfordulásának valószínűségét azokhoz a nyelvekhez képest, ahol a null érték bármely típushoz hozzárendelhető anélkül, hogy kifejezetten jeleznénk.