ArrayList<Object>
特别是s的列表,Object
而ArrayList<?>
是我们不确定其具体类型的列表(意味着我们不能向列表中添加任何内容,除了null
)。当列表的类型不相关时,您将使用后者,例如,当您要执行的操作不依赖于列表的类型时。例如:
public static boolean isBigEnough(ArrayList<?> list) {
return list.size() > 42;
}
泛型教程中涵盖了所有内容(请参阅通配符部分)。
最后,ArrayList
没有类型参数的是原始类型:它甚至被允许的唯一原因是为了向后兼容低于 5 的 Java 版本,您应该尽可能避免使用它。