List和List<?> ;?之间有什么区别?我知道我无法在List<?>中添加任何元素.我有一个代码:
List<String> myList = new ArrayList<String>();
processList(myList);
processListGeneric(myList);
public static void processList(List myList) {
Iterator it = myList.iterator();
while(it.hasNext())
System.out.println(it.next());
}
public static void processListGeneric(List<?> myList) {
Iterator<?> it = myList.iterator();
while(it.hasNext())
System.out.println(it.next());
}
这两个方法的名称不能相同,因为它会导致编译时错误.那么这两种方法有什么不同吗?
解决方法
两者都做同样的事情,但在第二种情况下,编译器被告知您确实需要一个没有类型边界的列表并且不会引发警告.如果您使用的是Java 5或更高版本,则鼓励您使用第二种方法.