Java泛型PECS

我知道PECS是什么意思.

制作人扩展,消费者超级.

问题是我怎么知道它是消费者还是生产者?

此代码也遵循“PECS”

public class Tree<T> {

    //List of branches for this tree
    private List<Tree<? super T>> branch = new ArrayList<Tree<? super T>>();
    public Tree(T t){ this.t = t; }
    public void addBranch(Tree< ? super T> src){ branch.add(src); }
    public Tree<? extends T> getBranch(int branchNum){
        return (Tree<? extends T>) branch.get(branchNum);
    }
    private T t;
}

解决方法:

你可以使用的一个很好的助记符是想象返回扩展和接受超级.

一棵树<?延伸T>读取树<?返回T>,这意味着您可以在Tree中调用返回T的方法,但不能调用接受T作为参数类型的方法.

上一篇:java – 是否可以编写一个接受不同抽象的泛型参数的方法?


下一篇:哪天返回-Java