java - java中的泛型错误

标签 java list generics arraylist collections

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 都是数字类型,并且这些类型的列表仍然应该是数字类型,那么为什么会出现错误呢?

最佳答案

DoubleIntegerNumber 的子类但是ArrayList<Double>ArrayList<Integer>不是 ArrayList<Number> 的子类。 了解更多 here

关于java - java中的泛型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32739456/

相关文章:

Python - 向字段添加值

list - 仅替换列表中的元素一次 - Haskell

c# - Func<T> 的性能和继承

Java堆空间内存泄漏

java - 安卓 : Using Listfragment instead of Fragment

java - 有界类型参数 @see 和 @link javadoc

编译时类型未知的 Java 类属性

java - List<Something> 和 List< 有什么区别?扩展 Something>?

java - 组的递归计数

java - 从java字符串中解析出特定字符