Sobes.tech
Junior

¿Qué sucede si accede a un campo nullable de un objeto en Kotlin?

sobes.tech AI

Respuesta de la IA

Si se accede a un campo nullable de un objeto sin verificar si es null, se producirá una excepción NullPointerException (NPE).

Para acceder de manera segura, se pueden usar los siguientes enfoques:

  1. Operador de llamada segura (?.): Devuelve null si el objeto es null, de lo contrario realiza la llamada.

    // Supongamos que user? es un User?
    val userName: String? = user?.name
    
  2. Operador de afirmación de no-null (!!): Confirma explícitamente que el objeto no es null. Si es null, lanza NullPointerException.

    // Usar conscientemente, puede llevar a NPE
    val userName: String = user!!.name
    
  3. Operador Elvis (?:): Proporciona un valor predeterminado si el objeto a la izquierda del operador ?: es null.

    val userName: String = user?.name ?: "Usuario desconocido"
    
  4. Bloques if o when: Verificación explícita de null.

    if (user != null) {
        val userName = user.name
    } else {
        // Manejar el caso en que user es null
    }
    
  5. Funciones let, run, apply, with con llamada segura:

    user?.let {
        // `it` dentro de este bloque es un `User` no nulo
        val userName = it.name
    }
    

La elección del enfoque depende de la lógica del programa y del comportamiento deseado en caso de que el objeto sea null. Generalmente, se recomienda usar el operador de llamada segura (?.) o el operador Elvis (?:) para evitar NPE. El operador !! debe usarse con precaución.