java – 有界类型参数和上限通配符之间的差异
发布时间:2020-05-24 16:49:00 所属栏目:Java 来源:互联网
导读:我知道有一个类似的问题已经发布了,虽然我认为我有一些不同… 假设你有两种方法: // Bounded type parameterprivate static T extends Numbervoid processList(ListT someList){}// Upper bound wildcardprivate static void processList2(List
|
我知道有一个类似的问题已经发布了,虽然我认为我有一些不同… 假设你有两种方法: // Bounded type parameter
private static <T extends Number>void processList(List<T> someList){
}
// Upper bound wildcard
private static void processList2(List<? extends Number> someList){
// ...
}
据我所知,两种方法都接受参数,即Number或Number类型的列表.但是两种方法之间是什么呢? 解决方法在编译期间,两种语法之间有几个区别:>使用第一种语法,您可以添加元素到someList,但第二种,你不能.这通常被称为PECS,并且通常被称为PUT和GET原理. private static <T extends Number> void processList(List<T> someList) {
T n = someList.get(0);
someList.add(1,n); //addition allowed.
}
private static void processList2(List<? extends Number> someList) {
Number n = someList.get(0);
//someList.add(1,n);//Compilation error. Addition not allowed.
processList(someList);//Helper method for capturing the wildcard
}
请注意,由于泛型是编译时间糖,所以在更广泛的层面上的这些差异仅限于编译. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
