Coup de Grace

爪哇虎书读后 有关泛型 协变 逆变

这本书过于基础,不适合购买

通过类型擦除来保证以下代码的兼容性:

List someThings = getSomething();
List<String> strings = (List<String>) someThings;

协变与逆变

臭名昭著的<Scala编程>中译本彻底把这段讲到让人困惑.

List<?> objects =new ArrayList<String>(); //让容器类型具有父子关系
List<? extends Object> objects =new ArrayList<String>(); //协变
List<? super String> objects =new ArrayList<Object>(); //逆变

俗话说得好

Producer Extends ,Consumer Super.

把方法视为一等公民时,则一个方法的定义同时具有生产者与消费者的身份

反映到泛型里,恰似<java 核心编程>里的这一句

public static <T extends Comparable<? super T>> T min(T[] a)