Sobes.tech
Junior

Šta će se desiti ako pristupite polju objekta koji može biti null?

sobes.tech АИ

Одговор од АИ

NullPointerException (NPE). Pojavljuje se kada pokušate da pozovete metodu ili pristupite polju objekta čija je referenca null.

Primer:

data class User(val name: String)

fun printUserName(user: User?) {
    // Ako je user == null, doći će do NullPointerException
    println(user.name)
}

Da biste izbegli NPE, možete koristiti:

  • Provere na null:
    fun printUserName(user: User?) {
        if (user != null) {
            println(user.name)
        } else {
            println("Korisnik je null")
        }
    }
    
  • Operator sigurnog poziva (?.):
    fun printUserName(user: User?) {
        println(user?.name) // Ispisaće null ako je user null, inače ime
    }
    
  • Elvis operator (?:):
    fun printUserName(user: User?) {
        val userName = user?.name ?: "Podrazumevano ime" // Dodeli "Podrazumevano ime" ako je user?.name null
        println(userName)
    }
    
  • Tipovi bez null (u Kotlinu):
    // Ova metoda prihvata samo ne-null objekat User
    fun printUserName(user: User) {
        println(user.name) // Garantovano ne null
    }