当编写一个带有两个对象的方法时,在子类型 - 超类型关系中有两个类型参数,从这些选项中声明你的意图的最佳方法是什么?
声明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
和src
的类型参数的相对继承。哪个更好?
答案 0 :(得分:1)
我认为扩展是最常见的,如果不需要同时使用,则不应该。所以我只选择延伸。
所以没有正确的方法,除非你有一个指定它的约定。