我正在用Android Studio将Java转换为Kotlin . 我在实例变量后获得双重爆炸 . 什么是双重爆炸,更重要的是这在哪里记录?
mMap!!.addMarker(MarkerOptions().position(london).title("Marker in London"))
这是不安全的可空类型( T? )转换为非可空类型( T ) . 如果值为 null ,它将抛出 NullPointerException .
T?
T
null
NullPointerException
记录here以及Kotlin无效安全手段 .
这是一个让事情更清晰的例子 . 说你有这个功能
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 类型添加问号以使其可为空来防止这种情况 .
String
所以我们有
fun main(args: Array<String>) { var email: String? email = null println(email) }
这产生了结果
现在,如果我们希望函数在email的值为null时抛出异常,我们可以在电子邮件末尾添加两个惊叹号 . 像这样
fun main(args: Array<String>) { var email: String? email = null println(email!!) }
这将抛出一个 KotlinNullPointerException
KotlinNullPointerException
2 回答
这是不安全的可空类型(
T?
)转换为非可空类型(T
) . 如果值为null
,它将抛出NullPointerException
.记录here以及Kotlin无效安全手段 .
这是一个让事情更清晰的例子 . 说你有这个功能
这将产生以下编译错误 .
现在,您可以通过向
String
类型添加问号以使其可为空来防止这种情况 .所以我们有
这产生了结果
null
现在,如果我们希望函数在email的值为null时抛出异常,我们可以在电子邮件末尾添加两个惊叹号 . 像这样
这将抛出一个
KotlinNullPointerException