Que signifie le point d'exclamation en Kotlin et comment s'en débarrasser ?
Bonjour à tous ! Je viens de commencer à apprendre Kotlin après Java et j'ai rencontré une construction incompréhensible. Dans du code étranger, j'ai vu qu'après le type d'une variable, il y a un point d'exclamation, par exemple :
```kotlin
val name: String! = someJavaMethod()
```
J'ai essayé de comprendre ce que cela signifie, mais je n'ai rien trouvé dans la documentation. Quand j'écris ce code dans mon projet, le compilateur affiche l'erreur "This type has a constructor". Et si je l'utilise dans le type de retour d'une fonction, IDEA le souligne même en rouge.
Pendant ce temps, dans les logs, je vois que parfois la variable peut être null, et parfois non. J'ai essayé d'écrire `String?` — alors le compilateur se plaint que je ne peux pas faire de "unpack". Et si `String` — alors il émet un avertissement concernant un éventuel NPE.
S'il vous plaît, dites-moi :
1. Qu'est-ce que `String!` et pourquoi cette syntaxe existe-t-elle ?
2. Comment traiter correctement ces types ?
3. Existe-t-il un moyen de se débarrasser de ce point d'exclamation ?
Je donne un exemple de code qui me trouble :
```kotlin
// Java-