首页 文章

什么是Kotlin双爆炸(!!)操作员?

提问于
浏览
74

我正在用Android Studio将Java转换为Kotlin . 我在实例变量后获得双重爆炸 . 什么是双重爆炸,更重要的是这在哪里记录?

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

2 回答

  • 46

    这是不安全的可空类型( T? )转换为非可空类型( T ) . 如果值为 null ,它将抛出 NullPointerException .

    记录here以及Kotlin无效安全手段 .

  • 109

    这是一个让事情更清晰的例子 . 说你有这个功能

    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

    现在,如果我们希望函数在email的值为null时抛出异常,我们可以在电子邮件末尾添加两个惊叹号 . 像这样

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

    这将抛出一个 KotlinNullPointerException

相关问题