JAVA で反変性を使用する利点は何ですか?
2 つの方法があるとします。
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());
}
違いは何ですか?反変性は、オブジェクト型を「取得」することしかできないため、さらに悪いようです。なぜ、いつ使用する必要があるのでしょうか?