ArrayList <?>,ArrayList,ArrayList <Object>有什么区别?

Kar*_*way 10 java generics

有人可以请解释什么区别ArrayList<?>,ArrayList而且ArrayList<Object>是,当使用的呢?它们是相同的还是在实施层面上都有不同的含义?

ars*_*jii 18

ArrayList<Object>具体的名单Object小号,而ArrayList<?>一个列表,它的具体类型,我们不确定的(这意味着到列表中,除了我们不能添加任何东西null).当列表的类型不相关时,您将使用后者,例如,当您要执行的操作不依赖于列表的类型时.例如:

public static boolean isBigEnough(ArrayList<?> list) {
    return list.size() > 42;
}
Run Code Online (Sandbox Code Playgroud)

这些都在泛型教程中有所介绍(参见通配符部分).

最后,ArrayList没有类型参数是原始类型:它甚至被允许的唯一原因是向后兼容5以下的Java版本,并且您应该尽可能避免使用它.