¿Qué significa el signo de exclamación en Kotlin y cómo deshacerse de él?
¡Hola a todos! Acabo de empezar a aprender Kotlin después de Java y me encontré con una construcción extraña. En código ajeno vi que después del tipo de variable hay un signo de exclamación, por ejemplo:
```kotlin
val name: String! = someJavaMethod()
```
Intenté entender qué significa, pero no encontré nada en la documentación. Cuando escribo ese código en mi proyecto, el compilador da el error "This type has a constructor". Y si lo uso en el tipo de retorno de una función, IDEA lo subraya en rojo.
Además, en los logs veo que a veces la variable puede ser null y a veces no. Probé escribir `String?` — entonces el compilador se queja de que no puedo hacer "unpack". Y si pongo `String` — da una advertencia sobre posible NPE.
Por favor, aclárenme:
1. ¿Qué es `String!` y por qué existe esta sintaxis?
2. ¿Cómo manejar correctamente esos tipos?
3. ¿Hay alguna forma de deshacerse de ese signo de exclamación?
Les pongo un ejemplo de código que me confunde:
```kotlin
// Java-