Study & Practice

北海道札幌市のプログラマによる技術とか雑記のブログ

〜警告: [unchecked] raw型Listのメンバーとしてのadd(E)への無検査呼出しです〜について

以前も同じエラーでハマった

タイトルの警告文は

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

という注意が出て-Xlint:uncheckedを指定してコンパイルした際に出てくる

今回はすぐに抜けられたが同じことが今後何度か続きそうなので備忘録として記録しておく。

原因は「要素の型が指定されていないプログラムをコンパイルしたこと」らしく
java1.5以降に実装された模様。

情報はこちらのブログからhttp://d.hatena.ne.jp/littlebuddha/20090406/1239011651

List hoge = new ArrayList();

のようにArrayListの宣言時に型を宣言していないため上記のエラーが発生してしまうため

List<String> hoge = new ArrayList<>();

のようにArrayListの宣言時に型を宣言してやればいい。

以下、サンプルコード

//エラーが発生
import java.util.List;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        List hoge = new ArrayList();
        hoge.add("hogehoge");
    }
}
//コンパイル成功
import java.util.List;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        List<String> hoge = new ArrayList<>();
        hoge.add("hogehoge");
    }
}