泛型的PECS原则
文章目录
- 泛型的PECS原则
- Producer extends
- Consumer supper
- 示例
泛型的PECS原则
PECS(Producer extends Consumer supper)原则是用来帮助我们判断何时使用 ?extends T, 何时使用 ?super T的。
Producer extends
当这个泛型类是生产者,生成东西给我们读取的时候,我们使用 ? extends T。因为这样生成的东西,也就是我们读取的东西都是T的子类,我们可以很方便地使用T类型地变量接收而不会出错。
Consumer supper
当这个泛型类是消费者,也就是我们要向这个类写入数据的时候,我们使用 ?supper T,因为这样我们可以控制写入的数据永远都是T的父类,我们只要写入的数据都是T类型也就不会出错。
示例
public static <T> copyList(List<? supper Number> target, List<? extends Number> source){for(int i=0;i<source.size();i++){target.add(source.get(i));}
}
上面的示例就是将source列表的值全部复制到target列表中,source是生产者,target是消费者。