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