注目記事

【Javaコード入門】ジェネリックス_①ジェネリックスの基本

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

  1. List<String> l = new ArrayList<String>();
  2. l.add("Java");
  3. l.add("Scala");
  4. l.add("Ruby");
  5. String str = l.get(0);

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

  1. List l = new ArrayList();
  2. l.add("Java");
  3. l.add("Scala");
  4. l.add("Ruby");
  5. String str = (String)l.get(0);

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

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

 

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

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

監修

山田祥寛(有限会社 WINGSプロジェクト)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NEC にてシステム企画業務に携わるが、2003年 4 月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト(https://wings.msn.to/)」の代表でもある。主な著書に『改訂 3 版JavaScript 本格入門』(技術評論社)、「独習シリーズ(C#・Python・PHP・Ruby・JSP&サーブレットなど)」(翔泳社)、「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravel など)」(Amazon Kindle)など。売り上げの累計は100万部を超える。