Sobes.tech
Junior

¿Qué sucederá si se accede a un campo de un objeto que puede ser null?

sobes.tech AI

Respuesta de la IA

NullPointerException (NPE). Ocurre cuando intentas llamar a un método o acceder a un campo de un objeto cuya referencia es null.

Ejemplo:

data class User(val name: String)

fun printUserName(user: User?) {
    // Si user == null, aquí ocurrirá NullPointerException
    println(user.name)
}

Para evitar NPE, puedes usar:

  • Comprobaciones de null:
    fun printUserName(user: User?) {
        if (user != null) {
            println(user.name)
        } else {
            println("El usuario es null")
        }
    }
    
  • Operador de llamada segura (?.):
    fun printUserName(user: User?) {
        println(user?.name) // Mostrará null si user == null, de lo contrario, el nombre
    }
    
  • Operador Elvis (?:):
    fun printUserName(user: User?) {
        val userName = user?.name ?: "Nombre por defecto" // Asignará "Nombre por defecto" si user?.name == null
        println(userName)
    }
    
  • Tipos no nulos (en Kotlin):
    // Este método solo acepta objetos User no nulos
    fun printUserName(user: User) {
        println(user.name) // Garantizado no null
    }