什么是Kotlin double-bang(!!)运算符?

我使用Android Studio将Java转换为Kotlin。 在实例variables之后,我得到了双重爆炸。 什么是双重的,更重要的是这个记录在哪里?

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

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

这里记载的是与Kotlin无效安全的手段。

这是一个例子,使事情更清楚。 说你有这个function

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

这将产生以下编译错误。

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

现在,您可以通过向Stringtypes添加一个问号来使其不可用。

所以我们有

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

这产生了一个结果

null

现在,如果我们希望函数在email的值为空时抛出exception,我们可以在电子邮件的末尾添加两个惊叹号。 喜欢这个

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

这将抛出一个KotlinNullPointerException