【学習kotlinシリーズ】スマートキャスト

Qiitaでことりん学習帳を発売しています!

スマートキャストとは

Null安全で述べた通り、Nullの代入を許可すると、そのオブジェクトのメソッドやプロパティにはアクセスできなくなる。が、if文でNullでないことを確認すると、メソッドやプロパティにアクセスできる。

実際に書いてみる

fun main(args: Array<String>){

    val str: String? = "abc"

    if (str != null){
        print(str.toUpperCase())
    }

}

実行結果

ABC

when文を使うことで、更にスマートキャストを活用できる。

実際に書いてみる

fun main(args: Array<String>){

    val lst: List<Any> = listOf('a', 3, "abc", true)

    for( e in lst ){
        val result: Any? = when(e){

            is Int -> e + 3
            is String -> e.toUpperCase()
            is Char -> e
            is Boolean -> e.not()
            else -> null
        }

        println(result)
    }

}

実行結果

a
6
ABC
false