我正在试图找出整个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;
}
}
Run Code Online (Sandbox Code Playgroud)
如何添加"扩展"通配符,指定set方法可以接收E 或任何继承类E(在这种情况下,Node将保留参数的上传版本).
或者即使我按原样离开它也会有效吗?
(我可能会对泛型类型的不变方面感到困惑.)
谢谢!
您的班级已经按照您的要求进行了。让我们通过例子来演示一下。假设您已经创建了 Node (Number
是 的超类Integer
,Long
等等);
Node<Number> numberNode = new Node<Number>(1);
Run Code Online (Sandbox Code Playgroud)
您也可以通过传递其子类来调用 set 方法
numberNode.set(new Integer(1));
numberNode.set(new Long(1));
Run Code Online (Sandbox Code Playgroud)