Java 集合复制方法混乱(超级和扩展通配符)
我目前正在学习java泛型作为编程类的一部分,在理解Collections类中的静态复制方法时遇到问题:Java 集合复制方法混乱(超级和扩展通配符),java,generics,collections,extends,super,Java,Generics,Collections,Extends,Super,我目前正在学习java泛型作为编程类的一部分,在理解Collections类中的静态复制方法时遇到问题: publicstaticvoidcopy(列表)实际上我不认为有什么区别,但如果有,可能是当你将ints的类型更改为List时发生的情况。我找不到一个使用列表不起作用的用例。我想他们只是应用了PEC的原理,尽管这里不是绝对需要它(除非我遗漏了什么)。这也没什么坏处。我明白了,谢谢你们两位澄清了这一点。在我不久前写的这篇文章中,我最终精确地解释了这个特定的场景。它可能不会完全回答你的问题,但幸
publicstaticvoidcopy(列表)实际上我不认为有什么区别,但如果有,可能是当你将ints
的类型更改为List时发生的情况。我找不到一个使用列表不起作用的用例。我想他们只是应用了PEC的原理,尽管这里不是绝对需要它(除非我遗漏了什么)。这也没什么坏处。我明白了,谢谢你们两位澄清了这一点。在我不久前写的这篇文章中,我最终精确地解释了这个特定的场景。它可能不会完全回答你的问题,但幸运的是,它将帮助你进行调查。
public class Colls <T> {
public static <T> void copy(List<? super T> dest, List<T> src){
for(int i=0; i<src.size(); i++){
dest.add(src.get(i));
}
}
}
public class Main{
public static void main(String[] args){
List<Number> nums = new ArrayList<Number>();
List<Integer> ints = Arrays.asList(1,2,3,4,5);
Colls.copy(nums, ints)
}
}