Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職

ジェネリックスの基本

たとえば、List<String>のように、<…>の形式で型を明示することで、String型専用のリストを生成できます。

List l = new ArrayList();
l.add("Java");
l.add("Scala");
l.add("Ruby");
String str = l.get(0);

同じコードをジェネリックスを利用しないで記述すると、以下のようになります。

List l = new ArrayList();
l.add("Java");
l.add("Scala");
l.add("Ruby");
String str = (String)l.get(0);

リストから取り出した要素はすべてObject型と見なされますので、いちいち型キャストしなければならないのです。ジェネリックスを利用することで、こうした手間や、キャストミスによる例外の発生などを防ぐことができます。
また、リストに要素をセットする際も、想定外の型がセットされることを防げます。

List l = new ArrayList();
l.add(10.1);	// String型でないのでコンパイルエラー
note

ジェネリックスの要素型
ジェネリックスの<…>には、任意の型を指定できます。たとえば「List<★List<String>★>」とすることで、String型のリストを要素に持つリスト、つまり二次元のリストを表現できます。
また、「Map<String, String>」のように型を複数受け取るクラスもあります。型はカンマ区切りで指定します。

ジェネリックス
ジェネリックスの基本
ジェネリックスの定義
ジェネリックメソッドの定義

Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職