考慮以下代碼:Java的泛型方法問題
public <T> List<T> meth(List<?> type)
{
System.out.println(type); // 1
return new ArrayList<String>(); // 2
}
它不會在第2行編譯,說是要求清單。
現在,如果它改爲:
public <T> List<?> meth(List<T> type)
{
System.out.println(type); // 1
return new ArrayList<String>(); // 2
}
它編譯。爲什麼?我認爲使用通配符聲明泛型類型和使用通配符的區別在於,使用通配符時,不能向集合添加新元素。爲什麼<?>
允許返回List的子類型?我在這裏錯過了一些東西,明確的規則是什麼以及它如何被應用?
你最初的目標是什麼?你想用你的方法完成什麼? – akarnokd 2009-07-19 14:09:13
沒有什麼,這不是一個項目的一部分,我只是想了解java的通用方法。我'現在閱讀這個http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf – andandandand 2009-07-19 14:11:17