List<?>とList<Object>の違い

List<?>とList<Object>の違い

List<?>とList<Object>の違いについてです。

以下のようなソースを開発している時に見ました。

List<?> list = getList();

List<?>で受け取るとlistにaddするとコンパイルエラーになります。

但し、list.add(null)だけできます。

List<Object> list = new ArrayList<Object>();
List.add("test"); // エラーにならない

これだと何らかの型を返すのでString型をaddしてもエラーになりません。

List<?>だとnull以外addできず違いがわかりませんが覚えておくと良いかもしれません。

コメント

タイトルとURLをコピーしました