!!
est évalué à l'exécution, c'est juste un opérateur.
L'expression (x!!)
- jette un
KotlinNullPointerException
si x == null
,
- sinon, il renvoie
x
coulée du type non nulle (par exemple, on renvoie sous forme de String
lorsqu'il est appelé correspondant à une variable avec le type String?
).
Ceci, bien sûr, fait null!!
raccourcis pour throw KotlinNullPointerException()
.
Si elle aide, vous pouvez penser à !!
comme faire la même chose en fonction comme celui-ci fait:
fun <T> T?.toNonNullable() : T {
if(this == null) {
throw KotlinNullPointerException()
}
return this as T // this would actually get smart cast, but this
// explicit cast demonstrates the point better
}
faire Alors x!!
vous donnerait le même résultat que x.toNonNullable()
.
Et votre question est? – tyczj
Ne devrait-il pas lancer une erreur de compilation? – RBK
FYI: IntelliJ IDEA marque mark myvar: String = 'avec un avertissement:" Code inaccessible ". – mfulton26