Java允许设定通配符的下限:<? super Type>,这个通配符表示它必须是Type本身,或是Type的父类,下面程序采用设定通配符下限方式改写了前面程序:
这样可以保证程序可以推断出最后一个被复制的元素类型是Integer,而不是Number类型。
泛型方法与方法重载:
因为泛型既允许设定通配符的上限,也允许设定通配符的下限,所以允许在一个类里包含如下两个方法定义:
public class MyUtils{ public static <T> void copy(Collection<T> dest, Collection<? extends T> src){ } public static <T> T copy(Collection<? super T> dest, Collection<T> src) { } }上面MyUtils类中包含两个copy()方法,但调用这个方法就会引起编译错误:
List<Number> ln = new ArrayList<>(); List<Integer> li = new ArrayList<>(); copy(ln, li);编译器无法确定这行代码想要调用哪个copy()方法。
泛型与数组:
参考网址:
posted @请注意,本站信息均收集自互联网,相关信息仅供参考,医疗等重要信息请以正规途径为最终意见,本站不承担任何责任!