public static void reverse(List<?> list)
{
List<Object> tmp = new ArrayList<Object>(list);
for (int i = 0; i < list.size(); i++)
{
list.set(i, tmp.get(list.size()-i-1)); // compile-time error , why ?
}
}
我正在學習泛型。 我知道這一點:當使用通配符?被替換爲適當的類型。當reverse()方法被調用時?將被替換,因爲每個類型都是Object的子類型,所以不應該有錯誤。 我正在尋找一個水晶般清晰的解釋。請幫忙 。難以理解通配符
'名單>'是_unbounded_通配符。這意味着你只能在列表中插入'null'。 –
https://docs.oracle.com/javase/tutorial/java/generics/unboundedWildcards.html –
你誤解了'?'。它不會被取代。它標識一個* unknown *。 – Andreas