我使用Android Studio將Java轉換爲Kotlin。在實例變量之後我得到了雙重砰砰聲。什麼是雙重轟炸,更重要的是這個記錄在哪裏?什麼是Kotlin double-bang(!!)運算符?
mMap!!.addMarker(MarkerOptions().position(london).title("Marker in London"))
我使用Android Studio將Java轉換爲Kotlin。在實例變量之後我得到了雙重砰砰聲。什麼是雙重轟炸,更重要的是這個記錄在哪裏?什麼是Kotlin double-bang(!!)運算符?
mMap!!.addMarker(MarkerOptions().position(london).title("Marker in London"))
這是不安全的空類型(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
類型,使之爲空。
因此,我們必須
fun main(args: Array<String>) {
var email: String?;
email = null
println(email);
}
由此產生的
null
結果現在,如果我們希望函數拋出一個異常,當電子郵件的值爲空,我們可以添加兩個電子郵件結尾處的驚歎號。像這樣
fun main(args: Array<String>) {
var email: String?;
email = null
println(email!!);
}
,這將拋出一個KotlinNullPointerException
這是什麼意思時,''!!是在聲明的結尾? IJ自動轉換爲Kotlin爲我做了'val price = sale.latest !!' – ycomp
@ycomp,這意味着'sale.latest'可以包含'null';只有當'sale.latest'不爲空時,分配纔會成功,否則將拋出NPE。這爲val價格提供了無效安全性:它的類型將是非空的。請參閱https://kotlinlang.org/docs/reference/null-safety.html – hotkey