Kotlin - キャスト(as)

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

1. 概要

変数の型を、親子関係がある他の型に変更します。
変数の値の型は変わらず、外から見た時の型だけが変わることに注意してください。
また、Int と Long は Number から継承したクラスのため、相互キャストできません。
変換したい場合は、toInt() や toLogn() など、to が付くメソッドを使って変換してください。


2. キャスト(as)

String の値が入った Any から String にキャスト
val x:Any = "abc"
val s = x as String
println(s) // abc

String の値が入った Any から Int にキャスト。
String から Int に変換できないため、ClassCastException が発生します。
val x:Any = "abc"
val s = x as Int  // ここで ClassCastException が発生
println(s)

as? を使うと、キャストに失敗しても例外が発生しません。
戻り値は null になります。
val x:Any = "abc"
val s = x as? Int
println(s) // null