Java泛型方法的参数

Paz*_*Paz 5 java generics

我正在试图找出整个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将保留参数的上传版本).

或者即使我按原样离开它也会有效吗?

(我可能会对泛型类型的不变方面感到困惑.)

谢谢!

san*_*hat 3

您的班级已经按照您的要求进行了。让我们通过例子来演示一下。假设您已经创建了 Node (Number是 的超类IntegerLong等等);

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)