下面代碼中的listNum.add(num)有什麼問題; (參考 - http://docs.oracle.com/javase/tutorial/java/generics/lowerBounded.html)泛型Java超級
它使編譯錯誤,因爲 Add方法(捕獲#1-的?超長)在類型列表中是不適用的參數(編號)
public class GenericSuper {
List<? super Long> listNum = new LinkedList <Number>();
List<? super ExportException> listExp= new LinkedList<RemoteException>();
public List<? super ExportException> addList()
{
Number num = 10;
listNum.add(num);
RemoteException rme = new RemoteException();
listExp.add(rme);
return rme;
}
}
爲什麼不只是將'listExp'聲明爲'List',將'listNum'聲明爲'List '?我懷疑你應該重新審視有界通配符的含義。 –
2013-04-10 11:38:37
我想在listExp中存儲listNum和ExportException中的所有超類。因此,在閱讀引用之後,在查詢中粘貼上面的內容。我嘗試使用下界的通配符。請建議正確的理解與鏈接和例子。 – 2013-04-11 06:09:34
但是'List <? super Long>'意味着「一個Long或超類的類型列表,但我不知道是什麼」 - 這意味着你不能爲其添加一個'Number'。 (它可能被創建爲'ArrayList',它不應該包含非Long。) –
2013-04-11 06:11:43