- PR -

インスタンスの生成

投稿者投稿内容
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2004-11-06 17:57
引用:
極端な話 引数Objectにしてキャストしまえばいいということですか?


状況により違います。

オブジェクト指向で言う『多態性』の効果を利用したいとき
など、高度に抽象化するときはより上位クラスとしての参照
を用います。
Objectでの参照が必要なときには使うべきですが、使用する
たびにキャストしなければならない状況では、コンパイル時
の型チェックが効かなくなり、実行時に ClassCastException
を生じさせるようなバグを生むことになるでしょう。
takamaro
大ベテラン
会議室デビュー日: 2004/10/12
投稿数: 100
投稿日時: 2004-11-06 19:37
その時々の状況によりますから「極端な話」が正にも否にもなり得るかもしれませんが、
1つ言える事は、メソッドの引数をそのメソッド内でキャストするという使い方
が正しいかどうかは良く検討する必要があるのではないかという事です。
(少なくとも私には、そのニーズを思いつきません)
引数にObjectが指定されているという事は、逆に言えばObject以外である必要が
無い、具体的にはObjectで規定されているメソッド以外は用いられないという
ことを暗に示していると考えるのが普通ではないかと思います。
メソッド内部でinstanceofなどで型を調べキャストし、各々の型のメソッドを
呼び出すならば、それは「同じ処理」とは言えません。
ならば引数が異なるHashMap、TreeMap用のメソッドを各々作って、共通の処理部分
の実装だけを別のメソッドで記述して呼び出した方がすっきりすると思われます。
それか、新たな自作インターフェイスを定義し、型毎の差分は各々のクラスでの
インターフェイス実装で吸収してしまうかでしょうかね。

スキルアップ/キャリアアップ(JOB@IT)