【发布时间】:2013-03-13 03:24:57
【问题描述】:
如果有一个泛型类型node<E> 有两个操作,如setData(E Type) 和E getData() 并让s0 成为node 的实例node<? extends Number> 那么为什么编译器不允许我使用s0.setData(Number Type) 至少?我可以理解为什么不允许其他类型,但为什么不允许 setData 放入 Number 类型,因为我们确定节点的类型至少是 number?
我的代码如下所示:
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!
【问题讨论】:
-
你是如何测试代码的?
-
显示一些代码,很难理解你的意思。
标签: java wildcard bounded-wildcard