Java5.0以降の配列

ArrayList

import java.util.*;

class ListTest {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("AAA");
        list.add("BBB");
        list.add("CCC");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

上記のようなコードをコンパイラすると、

注:ListTest.java の操作は、未チェックまたは安全ではありません。
注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。

のようなエラーが表示され、オプションをつけると詳細なエラー内容が表示される。

ListTest.java:6: 警告:[unchecked] raw 型 java.util.ArrayList 
のメンバとしての add(E) への無検査呼び出しです。
        list.add("AAA");


これを解決するためには以下のようなコードで配列を宣言しなければならない。

import java.util.*;

class ListTest {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("AAA");
        list.add("BBB");
        list.add("CCC");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

クラス型名の直後に<String>のように配列内部の要素の型を追記する必要がある。

HashMap

ハッシュについても同様で、<String,String>のようにキーと値の型をカンマ(,)区切りで指定する。
内部の値が指定した型と異なる場合は、キャスト(型変換)する必要がある。

import java.util.*;

class ListTest {
    public static void main(String[] args) {
        HashMap<String,String> map = new HashMap<String,String>();
        map.put("Name", "Tanaka");
        map.put("Age", String.valueOf(26));
        System.out.println("Name = " + map.get("Name"));
        System.out.println("Age = " + map.get("Age"));

    }
}