我定义了两个泛型方法:
public static <T> void copy1(Collection<T> dest, T[] src){}
public static <T> void copy2(T[] dest, T[] src){}
下面是调用上面方法的语句
copy2(new Date[10], new String[10]); 这个语句是正确的,因为可以理解为找这两个类型的公共类型Object。
copy1(new Vector<Date>(), new String[10]); 但是这个语句就是错误的了,老师讲的是说这个里面是传播型的,因为Vector里传的是Date,所以T就是Date类型的了,所以后面再传String就不对了。但是为什么上面这个语句第一个是Date,那后面是String就可以了呢,我想知道这里面是什么原因造成这种不同的?求大家指教,谢谢啦!
|