我试图弄清楚整个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(NumberIntegerLong等的父类(super class));

Node<Number> numberNode = new Node<Number>(1);

您也可以通过传递其子类来调用set方法
numberNode.set(new Integer(1));
numberNode.set(new Long(1));

09-30 14:57
查看更多