Kotlinのsafe castについて学びます。
down castをすると場合、対象が適切でないと、exceptionがthrowされますが、
exceptionをthrowせず、nullを返してくれるのが、safe castです。
では、例をみましょう。
1 2 3 4 5 6 7 |
fun main(args: Array<String>) { var obj : Any = "Any Object" // 1.出力:class java.lang.String println(obj.javaClass) // 2.safe cast 出力 null println(obj as? Int) } |
1.Anyで宣言された変数は初期値でStringに
変数objはAnyオブジェクトとして宣言されていますが、文字列が初期値に代入されているため、
Stringオブジェクトに変換されます。
また、javaClassにより、Stringオブジェクトであることがわかりました。
2.safe castでnull出力
2.ではsafe castを用いて、Down castしようとしていますが、
objはStringオブジェクトであるため、Int型にcastすることができません。
通常のdown castだと例外をthrowしますが、safe castを使用しているため。
nullが出力されます。
最後にsafe castの書き方です。
型 as? 型
以上です。