KotlinのDownCastに関してです。
Javaと同様KotlinもCastが可能です。
Castとは、定義された変数の型を親または、子の型に変換する機能です。
Kotlinでは、すべてのオブジェクトの親クラスとして、Anyが定義されています。
このAny Objectを基準にダウンキャストをしてみたいと思います。
1 2 3 4 5 6 7 8 9 10 11 |
fun main(args: Array<String>) { var container = Container(100) // 1.Int型にDownCast print(container.value as Int) // 2.Int型と判定されているので、StringにdowncastするとExceptionが発生 print(container.value as String) } class Container(var value: Any) { } |
1.kotlin downcast
DownCastするには、以下のように記述します。
変数 as 型
1.では、AnyからInt型にDownCastしています。
2.違う型へのDownCast
2.では、Int型で定義されたvalueをStirng型にDownCastして、
出力しようとしているので、Exceptionが発生してしまいます。
DownCastを使用する際は注意が必要です。