我想问一下在JAVA中使用逆变会有什么好处?
假设我们有两种方法:
public static <T> void f1(List<? super T> list, T item){
list.add(item);
}
public static <T> void f2(List<T> list, T item){
list.add(item);
}
我在主要部门打电话给他们:
public static main(){
f1(new ArrayList<Shape>(), new Cube());
f2(new ArrayList<Shape>(), new Cube());
}
有什么不同?逆变似乎更糟,因为我们只能“获取”对象类型,那么为什么以及何时应该使用它?