総称型。
JavaやC++Templateにおいて、コレクションフレームワークで良く使われる、あるオブジェクトに入れ子(集約(Aggregation, Composition)など)になっている別のオブジェクトの型を限定することで、余計なバグを減らすもの。
これにより、そのオブジェクトに入れ子になっているオブジェクトを取り出すたびにそのオブジェクトの型が何型であるかを調べる必要がなくなる。
Javaの例
List<String> list = new ArrayList<String>(); // Map<CharSequence> map = new HashMap<>(); // Java7以降では右辺の型引数を省略出来る list.add("リストに文字列追加"); //list.add(1); //数字を追加。String型ではないためエラーとなる。 for (String element : list) { // listの中に入っているものはすべてStringとわかっているので、明示的にダウンキャストする必要はない。 System.out.println(element); }
ここでListやArrayListのようなインタフェースやクラスのことを「パラメタライズドクラス(インタフェース)」「ジェネリッククラス(インタフェース)」という。
参考 : Java Generics