ArrayList <! - ? - >,ArrayList,ArrayList <object>?</object>有什么区别

时间:2013-08-29 14:10:40

标签: java generics

有人可以解释一下ArrayList<?>ArrayListArrayList<Object>之间的区别,以及何时使用它们?它们是相同的还是在实施层面上都有不同的含义?

2 个答案:

答案 0 :(得分:18)

ArrayList<Object> 具体Object的列表,而ArrayList<?>是一个我们不确定具体类型的列表(意味着我们无法添加任何内容)到除null之外的列表。当列表的类型不相关时,您可以使用后者,例如当您要执行的操作不依赖于列表的类型时。例如:

public static boolean isBigEnough(ArrayList<?> list) {
    return list.size() > 42;
}

generics tutorial涵盖了这一点(请参阅wildcards部分)。

最后,ArrayList没有类型参数是raw type:它甚至被允许的唯一原因是向后兼容5以下的Java版本,你应该尽可能不使用它。

答案 1 :(得分:1)

ArrayList<?>表示“包含要确定的类型的ArrayList实例”

ArrayListArrayList

的类

ArrayList<Object>表示包含ArrayList类型的Object个实例。

看起来这可能是一个很好的写作(以及更多):http://docs.oracle.com/javase/tutorial/java/generics/types.html