【发布时间】:2022-01-17 02:58:15
【问题描述】:
Java 的官方文档说:
需要注意的是,
List<Object>和List<?>不是 相同。您可以将Object或Object的任何子类型插入到List<Object>。但您只能将null插入List<?>。
参考link。
这似乎不是真的。这两个编译得很好并且可以使用(例如列表元素可以很好地打印):
List<Object> l1 = new ArrayList<>();
List<?> l2 = new ArrayList<>();
l1.add(null);
l2.add(null);
您能说一下文档中引用的句子的真正含义吗?
【问题讨论】:
-
您不是在插入对象,而是在围绕预定义的对象集创建列表。
-
在创建列表后尝试添加元素,例如
l1.add(new Object())和l2.add(new Object())。添加null应该对两者都有效,但是将除null之外的任何内容添加到l2应该会让编译器抱怨。