在编写一个采用两个对象的方法时,在子类型-超类型关系中具有两个类型参数,从这些选项中声明您的意图的最佳方式是什么?
声明
super
和extends
:public static <T> void copy(List<? super T> dst, List<? extends T> src) { ... }
仅声明
extends
:public static <T> void copy(List<T> dst, List<? extends T> src) { ... }
仅声明
super
:public static <T> void copy(List<? super T> dst, List<T> src) { ... }
据我了解,这三个都是正确的,并且彼此等价,因为您感兴趣的只是dst
and类型参数的相对继承src
。那么哪个更好呢?