Sobes.tech
Junior

Cosa succede se si accede a un campo di un oggetto che può essere null?

sobes.tech AI

Risposta dell'AI

NullPointerException (NPE). Si verifica quando si tenta di chiamare un metodo o accedere a un campo di un oggetto a cui si fa riferimento, e tale riferimento è null.

Esempio:

data class User(val name: String)

fun printUserName(user: User?) {
    // Se user == null, si verifica una NullPointerException
    println(user.name)
}

Per evitare NPE, puoi usare:

  • Controlli di null:
    fun printUserName(user: User?) {
        if (user != null) {
            println(user.name)
        } else {
            println("Utente è null")
        }
    }
    
  • Operatore di chiamata sicura (?.):
    fun printUserName(user: User?) {
        println(user?.name) // Mostrerà null se user == null, altrimenti il nome
    }
    
  • Operatore Elvis (?:):
    fun printUserName(user: User?) {
        val userName = user?.name ?: "Nome di default" // Assegna "Nome di default" se user?.name == null
        println(userName)
    }
    
  • Tipi non null (in Kotlin):
    // Questo metodo accetta solo oggetti User non null
    fun printUserName(user: User) {
        println(user.name) // Garantito non null
    }