public static <T> void copy(List<T> dst, List<T> src)
public static <T> void copy(List<T> dst, List<? extends T> src)
public static <T> void copy(List<? super T> dst, List<T> src)
public static <T> void copy(List<? super T> dst, List<? extends T> src)
上面四个方法都可以实现复制功能,尤其是第三种方法感觉就已经完全可以了,为什么Java 容器采用的第四第种方法呢?
------解决思路----------------------
public static <T> void copy(List<? super T> dst, List<? extends T> src),这个更宽泛。参数传T可以,传T的子类也可以。可以这么说,就像套瓷娃娃,这个方法可以套在上面几个方法上面。上面几个方法只能在这个方法下面,不能套在这个方法上面。
------解决思路----------------------
我们把T记为1, ?派生类记为2,如果有两个? 则记为3
这4个函数,分别覆盖了
1 1
1 2
2 1
2 3
这4种情况。
1 1和2 3并不能互相取代。否则同为派生类,但是又不相同类型,则无法复制了。
------解决思路----------------------
泛型基础,看一下java泛型吧。
------解决思路----------------------
这个。
------解决思路----------------------
偶觉得大家想多了:
泛型的List<? super T> t1;
泛型List<? extends T> t2;
现在把t2 copy 到t1,1.2.3都不匹配,只能是4。