Java StudioでAndroidをKotlinに変換しています。インスタンス変数の後にダブルバングを取得します。ダブルバングとは何ですか?さらに重要なことは、これはどこに文書化されていますか?
mMap!!.addMarker(MarkerOptions().position(london).title("Marker in London"))
これは、nullを許可しない型(T
)への安全でないnullを許可する型(T?
)の変換です。値がNullPointerException
の場合、null
をスローします。
それは文書化されています ここ 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
型に疑問符を追加してNULL可能にすることで、これを防ぐことができます。
だから私たちは
fun main(args: Array<String>) {
var email: String?
email = null
println(email)
}
これは次の結果を生成します
null
ここで、emailの値がnullのときに関数に例外をスローさせる場合、emailの最後に感嘆符を2つ追加できます。このような
fun main(args: Array<String>) {
var email: String?
email = null
println(email!!)
}
これはKotlinNullPointerException
をスローします
これは、NullPointerException
(または略してNPE)が好きな人に適したオプションです。not-nullアサーション演算子!!
は、値をnon-nullタイプに変換します値がnullの場合、例外をスローします。
val lll = a!!.length
したがって、a!!
と記述すると、a
(ここではString
など)のnull以外の値を返すか、a
の場合はNPEをスローできます=はnullです。
NPEが必要な場合は、それを使用できますが、明示的に要求する必要があります。 この演算子は、開発者が保証している場合に使用する必要があります。値がnullになることはありません。
お役に立てれば。