JavaのArrayListは、多数のオブジェクトをまとめて管理できる。
これは、複数の型のインスタンスを混在させて格納できることを意味する。
たとえば、下記のような実装があるとする。
ArrayList hoge = new ArrayList();
String name = "ほげたろうさん";
hoge.add(name);
String s = (String)hoge.get(0);
java.lang.System.out.println("Oh! Java yamatoken 1648: " + s);
コンソールには下記のように表示される。
Oh! Java yamatoken 1648: ほげたろうさん
ArrayList型 の hoge に、String型の name を格納している。
取り出す際は、(String)でキャストしないと、例外が発生する。
ここで、hoge に String型しか格納しないことが明確であれば、
下記のように総称型で宣言したほうがよい。
ArrayList<String> hoge = new ArrayList<String>();
String name = "ほげたろうさん";
hoge.add(name);
String s = hoge.get(0);
java.lang.System.out.println("Oh! Java yamatoken 1649: " + s);
コンソールには下記のように表示される。
Oh! Java yamatoken 1649: ほげたろうさん
総称型は ArrayList のあとに <> で定義する。
総称型にすると、取り出す際に、Stringでキャストしなくてよくなる。
(キャストしなくても例外が発生しなくなる)。