Kotlin - ?. と !!.

公開日:2019-11-06 更新日:2019-11-06
[Kotlin]

1. 概要

?. と !!. は、null許容型の変数のプロパティやメソッドにアクセスする際に使用します。
使用しないでアクセスするとコンパイルエラーとなります。
var s:String? = null
println(s.length) // コンパイルエラー


2. セーフコール演算子(?.)と null合体演算子(?:)

?. を使うと、変数が null だった場合に、処理が無視されます。
また、その時の戻り値は null になります。
?: と併せて使うことにより、デフォルト値を設定することができます。
var s:String? = null
println(s?.length)           // null
println(s?.length ?: "Test") // Test

s = "abc"
println(s?.length)           // 3
println(s?.length ?: "Test") // 3

null だった場合に例外をスローすることもできます。
var s1: String? = null
var s2 = s1 ?: throw NullPointerException()


3. 非nullアサーション演算子(!!.)

!!. を使うと、変数が null だった場合に例外がスローされます。
var s:String? = null
try {
    println(s!!.length)
} catch (e:Exception) {
    println(e) // kotlin.KotlinNullPointerException
}