O que significa o ponto de exclamação em Kotlin? (Ponto de exclamação simples)
Olá, colegas! Recentemente comecei a estudar Kotlin depois de Java, e uma coisa me confunde. Em alguns lugares no código, vejo um ponto de exclamação simples após o tipo de dado, por exemplo, `String!` ou `List!`. Eu entendo que Kotlin distingue estritamente entre tipos nullable (`String?`) e non-null (`String`), mas o que é `String!`? Na documentação oficial não encontrei isso.
Aqui está um exemplo do meu projeto, onde estou usando uma biblioteca Java:
```kotlin
// Código Java
public class JavaClass {
public static String getString() {
return null; // pode retornar null
}
}
// Código Kotlin
fun main() {
val result: String! = JavaClass.getString() // IDE mostra String!
println(result.length) // Aqui eu esperava um erro de compilação, mas não há
}
```
A IDE (IntelliJ IDEA) mostra o tipo `String!` para a variável `result`. Tentei usar `result` como uma string normal, e o compilador não reclama, mas em tempo de execução recebo um NullPointerException. Por que isso acontece? É algum tipo de