我试图弄清楚整个Java泛型主题。
更具体地说,此问题:
public class Node<E>{
private E data;
public Node(E data){
this.data=data;
}
public E get(){
return this.data;
}
public void set(E data){
this.data=data;
}
}
如何添加“扩展”通配符,以指定set方法可以接收E的任何继承类E 或(在这种情况下,节点将保留该参数的向上版本)。
还是即使我保持原样,它也能正常工作吗?
(我可能会对泛型类型的不变性感到困惑。)
谢谢!
最佳答案
您的类(class)已经在做您所需要的。让我们以身作则进行演示。假设您已经创建了Node(Number
是Integer
,Long
等的父类(super class));
Node<Number> numberNode = new Node<Number>(1);
您也可以通过传递其子类来调用set方法
numberNode.set(new Integer(1));
numberNode.set(new Long(1));