当编写一个采用两个对象且具有子类型-父类型关系中的两个类型参数的方法时,从这些选项中声明您的意图的最佳方式是什么?
同时声明
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
。那么哪个更好呢?
最佳答案
我认为扩展是最常见的,如果不需要两者都使用,则不应使用。所以我只会选择扩展。
所以没有正确的方法,除非你有一个指定它的约定。
关于java - 在继承层次结构中声明具有两个类型参数的方法的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19766004/