ID登録せずに、無料で質問できる♪ 教えて!gooアプリ>>

ArrayList::getメソッドはObject型を返却しますよね。
そのため、たとえば、

 ArrayList list = new ArrayList();
 Integer aaa = new Integer();
 list.add(aaa);

 Integer aaa2 = (Integer)list.get(0);

のように、Integerでリストに追加したものを取り出すのに
わざわざIntegerでキャストしなければなりません。

なんで、こんな不便な仕様になっているのでしょうか?

A 回答 (3件)

何でも入れられるようにするために、Object型を保持するようになっているため。

(J2SE1.4)
JavaTM 2 Platform Standard Edition 5.0 からは、
格納するオブジェクトの型を指定してArrayListが作成できるようになっている。
ArrayList<Integer> list = new ArrayList<Integer>();
のようにする。
    • good
    • 0
この回答へのお礼

なるほど、事情が分かりました。
やはり5.0では修正されたのですね。

みなさまありがとうございます!

お礼日時:2006/07/01 10:32

ArrayListに限らずコレクション系のクラス・インターフェースは汎用性を持たせるためにObjectクラスを扱っています。


狭い目で見れば不便ですが広い目で見れば便利です。
また、Java 5.0からはGenerics対応になりキャストを不要にすることも可能になりました。

参考URL:http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/ …
    • good
    • 0

Javaの経験はないけど・・・噂でGenericsとか言うのを聞いたことがある。

参考になれば。
http://www.javaworld.jp/technology_and_programmi …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング