如果有一個泛型類型node<E>
與像setData(E Type)
兩個操作和E getData()
,讓s0
是node
一個實例由node<? extends Number>
那麼我們爲什麼不編譯器允許我至少使用s0.setData(Number Type)
?我可以理解爲什麼不允許其他類型,但爲什麼不允許setData
輸入一個數字類型,因爲我們確信節點的類型至少是數字?的java通用歧義
我的代碼如下所示:
class Node<E> {
private E data;
// ...
public void setData(E obj) { data = obj; } // (1)
public E getData() { return data; } // (2)
// ...
}
Node<? extends Number> s0 = new Node<Number>();
s0.setData(200); //this is not allowed why?
Node<Number> s0 = new Node<Number>();
s0.setData(100); //But this is allowed!
你如何測試代碼? – 2013-03-13 03:28:11
顯示一些代碼,很難理解你的意思。 – Mordechai 2013-03-13 03:30:48