すべて

015-003 - ダウンキャスト

ダウンキャストとは、親クラスの型として扱われているオブジェクトを、元の子クラスの型に戻すことです。アップキャストと異なり、明示的なキャスト記述が必要で、実行時にClassCastExceptionが発生する可能性があります。安全に実行するには、instanceof演算子で型チェックを行ってからキャストします。Java 14以降では、パターンマッチングでより簡潔に記述できます。

ダウンキャストの理解は、型安全性を保ちながらポリモーフィズムを活用するために重要です。親クラスの型で扱っていたオブジェクトから、子クラス固有のメソッドにアクセスする必要がある場合に使用します。実務では、フレームワークから返されたオブジェクトを具体的な型に変換する場面や、型によって処理を分岐する場合などで使用されます。ただし、ダウンキャストの多用は設計の問題を示唆することもあり、慎重な使用が求められます。ビジターパターンなどでの型判定でも活用されます。

この項目を学ぶことで、型キャストの仕組みと安全な使用方法を習得し、instanceof演算子と組み合わせた型安全なコードが書けるようになります。実行時エラーを防ぐ実装力が身につきます。前提知識として、アップキャストとポリモーフィズムの基本を理解している必要があります。

問題 (9)

無料トライアル
015-003-001

ダウンキャスト:商品クラス

# ダウンキャスト:商品クラス **この問題では**: `Product`型の<a href="https://javadrill.tech/problems/001">変数</a>に格納された`D...

無料トライアル
015-003-002

setterメソッド:商品クラス

# setterメソッド:商品クラス **この問題では**: `Product`<a href="https://javadrill.tech/problems/007">クラス</a>のpriva...

無料トライアル
015-003-003

ダウンキャスト:スーパークラスからサブクラスへ

# ダウンキャスト:スーパークラスからサブクラスへ **この問題では**: Animal型変数に格納されたDogインスタンスをinstanceofで型チェックしてからダウンキャストし、Dog固有のf...

無料トライアル
015-003-004

ダウンキャスト:型の変換

# ダウンキャスト:型の変換 **この問題では**: Animal型変数にDogオブジェクトを格納し、ダウンキャストによってDog型に変換してDog固有の<a href="https://javad...

無料トライアル
015-003-005

ダウンキャスト:社員クラス

# ダウンキャスト:社員クラス **この問題では**: <a href="https://javadrill.tech/problems/002/001">標準入力</a>から名前・給与・チーム名を...

015-003-006

ポリモーフィズム:メソッド引数

**この問題では**: 親クラス型(Shape)の引数を受け取る`printArea()`<a href="https://javadrill.tech/problems/008">メソッド</a>を...

015-003-007

ダウンキャスト: instanceof検査

# ダウンキャスト: instanceof検査 **この問題では**: `Vehicle`型の<a href="https://javadrill.tech/problems/004">配列</a>...

015-003-008

instanceofとダウンキャストの基本

# instanceofとダウンキャストの基本 **この問題では**: Animal型配列に格納されたDogとCatオブジェクトをinstanceofで型判定し、ダウンキャストしてサブクラス固有の<...

015-003-009

安全なダウンキャストとClassCastException

# 安全なダウンキャストとClassCastException **学習目標**: 不適切なダウンキャストで発生するClassCastExceptionの原因と対処法を理解する **この問題では*...