Café y Código

7. Null Safety: Adiós, NullPointerException

El problema que Kotlin resuelve

El NullPointerException es el error más común en programación. Kotlin lo elimina en tiempo de compilación con su sistema de tipos.

"Si algo puede ser null, el tipo te lo dice obligatoriamente."

Tipos nullable vs no-nullable

Por defecto, las variables en Kotlin no pueden ser null. Para permitir null, agrega ?:

nullable.kt
KOTLIN
1val nombre: String = "Kotlin" // NO puede ser null
2// nombre = null // ERROR de compilación
3
4val nullable: String? = "Kotlin" // Puede ser null
5nullable = null // OK
6
7// Acceso directo a nullable = ERROR
8// println(nullable.length) // ERROR
9
10// Acceso seguro con ?.
11println(nullable?.length) // null (sin crash)

Elvis Operator (?:)

Si un valor es null, usa un valor por defecto:

elvis.kt
KOTLIN
1val nombre: String? = null
2
3// Si es null, usa "Desconocido"
4val nombreSeguro = nombre ?: "Desconocido"
5println(nombreSeguro) // "Desconocido"
6
7// Útil con longitudes
8val texto: String? = null
9val longitud = texto?.length ?: 0
10println(longitud) // 0

Non-null assertion (!!)

Úsalo solo cuando estés seguro de que no es null. Lanza excepción si lo es:

non-null.kt
KOTLIN
1val nombre: String? = "Kotlin"
2val longitud = nombre!!.length // OK: 6
3
4val vacio: String? = null
5// val error = vacio!!.length // Lanza NullPointerException

let con nullable

Ejecuta un bloque solo si el valor no es null:

let.kt
KOTLIN
1val email: String? = "ana@mail.com"
2
3email?.let {
4 println("Enviando correo a: $it")
5 // "it" es el valor no-null dentro del bloque
6}
7
8val vacio: String? = null
9vacio?.let {
10 println("Esto NO se imprime")
11}

💻 Misión

Crea una variable nullable Int?. Usa ?.let para imprimir su valor si no es null, y usa ?: para asignar 0 si lo es.

👁️ Ver solución sugerida
main.kt
KOTLIN
1fun main() {
2 val puntos: Int? = null
3 val puntosSeguro = puntos ?: 0
4 println("Puntos: $puntosSeguro")
5
6 puntos?.let {
7 println("Tienes $it puntos")
8 } ?: println("No hay puntos registrados")
9}

Pon a prueba tu null safety

Ko-fi
Donaciones
Apoyá cafeycodigo con un café en Ko-fi. Colaboradores: insignia, muro y zona exclusiva.