ダウンキャスト
015-003 - ダウンキャスト
ダウンキャストとは、親クラスの型として扱われているオブジェクトを、元の子クラスの型に戻すことです。アップキャストと異なり、明示的なキャスト記述が必要で、実行時にClassCastExceptionが発生する可能性があります。安全に実行するには、instanceof演算子で型チェックを行ってからキャストします。Java 14以降では、パターンマッチングでより簡潔に記述できます。
ダウンキャストの理解は、型安全性を保ちながらポリモーフィズムを活用するために重要です。親クラスの型で扱っていたオブジェクトから、子クラス固有のメソッドにアクセスする必要がある場合に使用します。実務では、フレームワークから返されたオブジェクトを具体的な型に変換する場面や、型によって処理を分岐する場合などで使用されます。ただし、ダウンキャストの多用は設計の問題を示唆することもあり、慎重な使用が求められます。ビジターパターンなどでの型判定でも活用されます。
この項目を学ぶことで、型キャストの仕組みと安全な使用方法を習得し、instanceof演算子と組み合わせた型安全なコードが書けるようになります。実行時エラーを防ぐ実装力が身につきます。前提知識として、アップキャストとポリモーフィズムの基本を理解している必要があります。
問題 (10)
ダウンキャスト:商品クラス
# ダウンキャスト:商品クラス **この問題では**: `Product`型の<a href="https://javadrill.tech/problems/001">変数</a>に格納された`D...
setterメソッド:商品クラス
# setterメソッド:商品クラス **この問題では**: `Product`<a href="https://javadrill.tech/problems/007">クラス</a>のpriva...
ダウンキャスト:スーパークラスからサブクラスへ
# ダウンキャスト:スーパークラスからサブクラスへ **この問題では**: 犬の名前を入力として受け取り、Animal型変数に格納されたDogインスタンスをinstanceofで型チェックしてからダ...
ダウンキャスト:型の変換
# ダウンキャスト:型の変換 **この問題では**: 標準入力から犬の名前を読み込み、Animal型変数にDogオブジェクトを格納し、ダウンキャストによってDog型に変換してDog固有の<a hre...
ダウンキャスト:社員クラス
# ダウンキャスト:社員クラス **この問題では**: <a href="https://javadrill.tech/problems/002/001">標準入力</a>から名前・給与・チーム名を...
ポリモーフィズム:メソッド引数
**この問題では**: 親クラス型(Shape)の引数を受け取る`printArea()`<a href="https://javadrill.tech/problems/008">メソッド</a>を...
ダウンキャスト: instanceof検査
# ダウンキャスト: instanceof検査 **この問題では**: 標準入力から乗り物の種類と名前を読み取り、`Vehicle`型の<a href="https://javadrill.tech...
instanceofとダウンキャストの基本
# instanceofとダウンキャストの基本 **この問題では**: 標準入力から犬と猫の名前を読み込み、Animal型配列に格納されたDogとCatオブジェクトをinstanceofで型判定し、...
安全なダウンキャストとClassCastException
# 安全なダウンキャストとClassCastException **学習目標**: 不適切なダウンキャストで発生するClassCastExceptionの原因と対処法を理解する **この問題では*...
安全なダウンキャストとinstanceof
# 安全なダウンキャストとinstanceof **この問題では**: `Animal`<a href="https://javadrill.tech/problems/007">クラス</a>の階...
