Kotlinのスマートキャストに関して学びます。
Kotlinでは、Nullableであるオブジェクトにアクセスし、関数参照などをすると、
コンパイルエラーが表示されて対象の操作を実行することができませんでした。
これを操作するための仕組みをスマートキャストといいます。
では、サンプルを見て確認しましょう。
1 2 3 4 5 |
fun main(args: Array<String>) { var str : String? = null // Error:(4, 16) Kotlin: Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String? println(str.toUpperCase()) } |
上記では、変数strがnullであるため、str.toUpperCase()でコンパイルエラーになってしまい、実行することができません。
これを解消するには、明示的にnull出ないことを示します。
1 2 3 4 5 6 |
fun main(args: Array<String>) { var str : String? = null if(str != null){ println(str.toUpperCase()) } } |
明示的にnullであることを示すことで、nullableであるオブジェクトの関数にアクセスしても、
コンパイルエラーが起きなくなりました。