Avatar ·

¿Qué es null/nil en Kotlin y cómo trabajar con él?

¡Hola a todos! Empecé a estudiar Kotlin después de Java y no logro entender completamente el concepto de null en este lenguaje. En Java, null es una referencia normal que puede asignarse a cualquier objeto, y constantemente luchamos con NullPointerException. En Kotlin, según entendí, los tipos son non-null por defecto, y para trabajar con null se deben usar construcciones especiales.

Tengo varias preguntas y problemas concretos:

  1. ¿Entiendo correctamente que String? (con signo de interrogación) es un tipo nullable, y String es non-null? ¿Y si intento asignar null a una variable de tipo String sin el signo de interrogación, obtendré un error de compilación?
  2. Intenté escribir un código simple, pero no compila:
fun main() {
    val name: String? = null
    println(name.length) // Error: Only safe (?.) or non-null asserted (!!.) calls are allowed
}

Esperaba que se lanzara una excepción en tiempo de ejecución, como en Java.