¿Qué significa el signo de exclamación en Kotlin? (Signo de exclamación simple)
¡Hola, colegas! Recientemente comencé a aprender Kotlin después de Java, y hay algo que me confunde. En algunos lugares del código veo un signo de exclamación simple después del tipo de dato, por ejemplo, `String!` o `List!`. Entiendo que Kotlin distingue estrictamente entre tipos nullable (`String?`) y non-null (`String`), pero ¿qué es `String!`? No lo encontré en la documentación oficial.
Aquí hay un ejemplo de mi proyecto donde uso una biblioteca de Java:
```kotlin
// Código Java
public class JavaClass {
public static String getString() {
return null; // puede devolver null
}
}
// Código Kotlin
fun main() {
val result: String! = JavaClass.getString() // IDE muestra String!
println(result.length) // Aquí espero un error de compilación, pero no lo hay
}
```
El IDE (IntelliJ IDEA) muestra el tipo `String!` para la variable `result`. Intenté usar `result` como una cadena normal, y el compilador no se queja, pero en tiempo de ejecución obtengo un NullPointerException. ¿Por qué sucede esto? ¿Es algún tipo de