Что такое Kotlin double-bang (!!) оператор?



Я конвертирую Java в Kotlin с Android Studio. Я получаю двойной удар после переменной экземпляра. Что такое двойной взрыв и, что более важно, где это документировано?



mMap!!.addMarker(MarkerOptions().position(london).title("Marker in London"))
683   2  

2 ответов:

это небезопасный тип с нулевым значением (T?) преобразование в ненулевой тип (T). Он будет бросать NullPointerException, если значение null.

это документально здесь вместе с Котлин средствами нулевой безопасности.

вот пример для наглядности. Скажем, у вас есть эта функция

fun main(args: Array<String>) {
    var email: String
    email = null
    println(email)
}

это приведет к следующей ошибке компиляции.

Null can not be a value of a non-null type String

теперь вы можете предотвратить это, добавив вопросительный знак в String введите, чтобы сделать его недействительным.

у нас есть

fun main(args: Array<String>) {
    var email: String?
    email = null
    println(email)
}

это дает результат

null

теперь, если мы хотим, чтобы функция выдавала исключение, когда значение электронной почты равно null, мы можем добавить два восклицания в конце письма. Вот так

fun main(args: Array<String>) {
    var email: String?
    email = null
    println(email!!)
}

это будет бросать KotlinNullPointerException

Comments

    Ничего не найдено.