作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我知道PECS是什么意思。
生产者扩展,消费者 super 。
问题是我怎么知道它是消费者还是生产者?
此代码是否也遵循“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;
}
最佳答案
您可以使用的一个很好的助记符是想象returns
对于 extends
和 accepts
对于 super
.
所以一个Tree<? extends T>
阅读 Tree<? returns T>
,这意味着您可以调用 Tree
中的方法返回 T
, 但不是接受 T
的方法作为参数类型。
关于Java 泛型 PECS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12197685/
我是一名优秀的程序员,十分优秀!