Java中的上界通配符
我有两个通用的方法来计算列表中元素的总和。方法的签名是Java中的上界通配符,java,generics,bounded-wildcard,Java,Generics,Bounded Wildcard,我有两个通用的方法来计算列表中元素的总和。方法的签名是 double method1(List由于类型擦除,最后执行的代码是相同的,因此使用一种方法与使用另一种方法没有区别 类型擦除的解释如下: 仅在编译时和编译时强制执行类型约束的过程 在运行时丢弃元素类型信息 由于您在此方法中没有使用U,因此它们没有区别。绝对没有区别,声明U的目的是让您可以使用它: public static <U extends Number> void doSomething(List<U> li
double method1(List由于类型擦除,最后执行的代码是相同的,因此使用一种方法与使用另一种方法没有区别
类型擦除的解释如下:
仅在编译时和编译时强制执行类型约束的过程
在运行时丢弃元素类型信息
由于您在此方法中没有使用U
,因此它们没有区别。绝对没有区别,声明U
的目的是让您可以使用它:
public static <U extends Number> void doSomething(List<U> list, Consumer<U> sink) {
list.forEach(sink::accept)
}
是的,我知道,有更简洁的方法可以做到这一点-请把它作为一个说明性的例子来对待我认为值得指出这一点-你可以在第二种方法中使用U
。@kabanus谢谢。
public static <U extends Number> void doSomething(List<U> list, Consumer<U> sink) {
list.forEach(sink::accept)
}
public static <U extends Number> List<U> copy(List<U> list) {
List<U> copy = new ArrayList<>();
copy.addAll(list)
return copy;
}