Sobes.tech
Junior

Mi történik, ha egy nullable mezőhöz férsz hozzá egy objektumban Kotlinban?

sobes.tech MI

Válasz az MI-től

Ha hozzáfér egy nullable objektum mezőjéhez null ellenőrzés nélkül, NullPointerException (NPE) léphet fel.

Biztonságos hozzáféréshez az alábbi megközelítéseket használhatja:

  1. Biztonságos hívási operátor (?.): Visszaadja a null-t, ha az objektum null, különben végrehajtja a hívást.

    // Tegyük fel, hogy user? egy User?
    val userName: String? = user?.name
    
  2. Nem-null állítási operátor (!!): Egyértelműen megerősíti, hogy az objektum nem null. Ha mégis, NullPointerException-t dob.

    // Tudatosan használja, NPE-hez vezethet
    val userName: String = user!!.name
    
  3. Elvis operátor (?:): Alapértelmezett értéket ad, ha a bal oldali objektum null.

    val userName: String = user?.name ?: "Ismeretlen felhasználó"
    
  4. if vagy when blokkok: Explicit null-ellenőrzés.

    if (user != null) {
        val userName = user.name
    } else {
        // Kezelje az esetet, ha a user null
    }
    
  5. let, run, apply, with funkciók biztonságos hívással:

    user?.let {
        // Ez a blokk nem-null `User`-t tartalmaz
        val userName = it.name
    }
    

A megközelítés kiválasztása a program logikájától és a kívánt viselkedéstől függ, ha az objektum null. Általában ajánlott a ?. vagy ?: operátorok használata a NPE elkerülése érdekében. Az !! operátort óvatosan kell alkalmazni.