Java通配符和泛型?超级T和?延伸T.

时间:2012-09-06 03:57:43

标签: java generics wildcard extends super

在处理通配符(如设置/添加通用项目到某个容器)时,建议使用这样的东西吗?

void add(List<?  super T> someList,someitem){
    someList.add(someItem);
}

当检索项目时,建议使用类似

的内容
 <T> void f1(List<? extends T> obj, T item) {
     obj.add(item);
}

这背后的原理是什么?我什么时候才能知道我是否应该使用它?

1 个答案:

答案 0 :(得分:2)

你应该看一下PECS原理的解释

What is PECS (Producer Extends Consumer Super)?

简而言之,当您想从对象获取信息时,请务必使用带外卡的扩展名。

当你想把信息放入一个物体时,一定要使用super和外卡