2011-02-01 137 views
1
// how to convert this 
Integer[] array = {1, 2}; 

// to this 
int[] array = {1, 2}; 

我正在處理具有第二種形式的代碼,並且需要修改數組的讀取方式。不知道Java的足夠多,我寧願只轉換風險錯誤。如何將Integer []轉換爲int []?

+0

可能的重複[將對象數組轉換爲它們的基本類型的數組。](http://stackoverflow.com/questions/564392 /將一個對象數組轉換爲它們的基元類型) – finnw 2011-02-01 15:55:14

回答

10

您可以使用commons-langArrayUtils.toPrimitive(array)

如果由於某種原因,不希望包括公共琅,這裏是該方法的代碼。但是,僅僅包含依賴關係是一個更好的選擇 - 它有很多額外的選擇,你最終需要。

public static final int[] EMPTY_INT_ARRAY = new int[0]; 

public static int[] toPrimitive(Integer[] array) { 
    if (array == null) { 
     return null; 
    } 
    if (array.length == 0) { 
     return EMPTY_INT_ARRAY; 
    } 
    int[] result = new int[array.length]; 
    for (int i = 0; i < array.length; ++i) { 
     result[i] = array[i].intValue(); 
    } 
    return result; 
} 
+1

+1,儘管我建議只使用commons-lang而不是使用這裏概述的方法(特別是如果項目仍在增長)。我總是習慣像這樣複製代碼,而不是使用commons-lang,但隨着代碼庫的增長,我不可避免地複製了其他方法,直到我可能從一開始就包含它。如果你發現你需要稍後刪除依賴項,它只使用這一個方法,那麼這不會太難,但我建議只是把它留下。很多項目都依賴於commons-lang,並且有很好的理由! – berry120 2011-02-01 14:18:51

+0

@ berry120 - 的確我很贊成包括commons-lang(或番石榴)。我會再強調一點。 – Bozho 2011-02-01 14:19:47

+0

如果這是commons-lang中的實際代碼,那麼您是否至少應該提及版權許可? – Ishtar 2011-02-01 14:21:56

2

我不知道你所期望的錯誤,也有兩者之間的差異非常少。一種轉換方法是:

Integer[] array = {1, 2}; 

int[] array2 = new int[array.length]; 

for (int i = 0; i < array.length; i++) { 
    array2[i] = array[i]; 
}