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")); } }