2015-09-23 64 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文檔,我需要一個更簡單的解釋,爲什麼這樣的事情是不可能的。 –