2015-09-23 65 views
1
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是一个数字类型,并且这些类型的列表仍然应该是一个数字类型,那么为什么会出现这样的错误?java中的泛型错误

+0

编辑到您的问题的错误的细节。 – peterh

回答

1

DoubleIntegerNumberArrayList<Double>ArrayList<Integer>都不是ArrayList<Number>子类的子类。 欲了解更多详情here

+0

我已经阅读了java文档,我需要一个更简单的解释,为什么这样的事情是不可能的。 –