ArrayList<Integer> arr = new ArrayList<>();
ArrayList<Double> doub = new ArrayList<>();
arr.add(5);
arr.add(6);
arr.add(7);
doub.add(6.5);
doub.add(8.5);
doub.add(7.5);
calc_test(arr);
calc_test(doub);
public static void calc_test(List<Number> list) {
for (Number obj : list) {
System.out.println(obj + "");
}
}
我知道这是java中的一个错误,可以通过添加? extends Number
来纠正在函数参数中,但是为什么正常的方法不起作用?毕竟 double 和 integer 都是数字类型,并且这些类型的列表仍然应该是数字类型,那么为什么会出现错误呢?
最佳答案
Double
和Integer
是 Number
的子类但是ArrayList<Double>
和ArrayList<Integer>
不是 ArrayList<Number>
的子类。
了解更多 here
关于java - java中的泛型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32739456/