2014-09-30 25 views
3

這是代碼sinplet:的ArrayList到陣列converstion - 指定者()函數推斷出的類型不符合上限錯誤

Excel excel = new Excel(); 
ArrayList<Integer> a1=excel.readExcelSheet("C:\\Users\\Madhukar\\Desktop\\Employee.xls"); 
     System.out.println("Using Iterator"); 
     Iterator iterator = a1.iterator(); 
     while (iterator.hasNext()) { 
     System.out.println(iterator.next());} 
     int x=a1.size(); 
     int[] a3=new int[x]; 
     a3=a1.toArray(a3); 

這是錯誤消息:

沒有合適的方法發現對於toArray(int []) 方法AbstractCollection.toArray(T#1 [])不適用 (推斷的類型不符合上限 推斷:int 上限:對象)

where T#1,T#2 are type-variable... 

回答

7

原始材料和仿製藥不符。您需要一個Integer[]而不是int[]

4

谷歌番石榴來拯救!

套用General Disarray"Google already did it!"

如果你需要做的事情,有人在谷歌可能需要做一些時間同樣的事情,並把番石榴一個真正行之有效的執行。

如果它不在番石榴中,可能有一個很好的理由不去做你想做的事。

的JavaDoc Ints.toArray()

返回包含集合中的每個值的陣列,轉換爲 int值在Number.intValue的方式()。元素從 複製參數集合,就像通過collection.toArray()一樣。調用這個 方法與調用該方法一樣是線程安全的。

import com.google.common.primitives.Ints; 

import java.util.ArrayList; 
import java.util.List; 

public class ObjectListToPrimitiveArray 
{ 
    public static void main(final String[] args) 
    { 
     final List<Integer> il = new ArrayList<>(); 
     il.add(0); 
     il.add(1); 
     il.add(2); 
     il.add(3); 

     final int[] ia = Ints.toArray(il); 

     System.out.println(Arrays.toString(ia)); 
    } 
} 

如果你正在利用番石榴最好是使用不可變列表生成

public static void main(final String[] args) 
{ 
    final List<Integer> il = ImmutableList.<Integer>builder() 
      .add(0) 
      .add(1) 
      .add(2) 
      .add(3).build(); 

    final int[] ia = Ints.toArray(il); 

    System.out.println(Arrays.toString(ia)); 
} 

兩個輸出:

[0, 1, 2, 3] 
相關問題