Date和String的共同类型是Object,所以copy2(new Date[10], new String[10]);的泛型T是Object
copy1(new Vector<date>(),new String[10]);//报错 因为泛型T是Date类型,在这里引用视频中的一句话:
<5>参数类型的类型推断具有传递性,下面第一种情况推断实际参数类型为Object,编译没有问题,而第二种情况则根据参数化的Vector类实例将类型变量直接确定为String类型,编译将出现问题:copy(new Integer[5],new String[5]) --> static <T> void copy(T[] a,T[] b); copy(new Vector<String>(), new Integer[5]) --> static <T> void copy(Collection<T> a , T[] b);
泛型同样把我搞得很晕~~ |