// how to convert this
Integer[] array = {1, 2};
// to this
int[] array = {1, 2};
我正在處理具有第二種形式的代碼,並且需要修改數組的讀取方式。不知道Java的足夠多,我寧願只轉換風險錯誤。如何將Integer []轉換爲int []?
// how to convert this
Integer[] array = {1, 2};
// to this
int[] array = {1, 2};
我正在處理具有第二種形式的代碼,並且需要修改數組的讀取方式。不知道Java的足夠多,我寧願只轉換風險錯誤。如何將Integer []轉換爲int []?
您可以使用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,儘管我建議只使用commons-lang而不是使用這裏概述的方法(特別是如果項目仍在增長)。我總是習慣像這樣複製代碼,而不是使用commons-lang,但隨着代碼庫的增長,我不可避免地複製了其他方法,直到我可能從一開始就包含它。如果你發現你需要稍後刪除依賴項,它只使用這一個方法,那麼這不會太難,但我建議只是把它留下。很多項目都依賴於commons-lang,並且有很好的理由! – berry120 2011-02-01 14:18:51
@ berry120 - 的確我很贊成包括commons-lang(或番石榴)。我會再強調一點。 – Bozho 2011-02-01 14:19:47
如果這是commons-lang中的實際代碼,那麼您是否至少應該提及版權許可? – Ishtar 2011-02-01 14:21:56
我不知道你所期望的錯誤,也有兩者之間的差異非常少。一種轉換方法是:
Integer[] array = {1, 2};
int[] array2 = new int[array.length];
for (int i = 0; i < array.length; i++) {
array2[i] = array[i];
}
Ints.toArray(Collection<Integer> col)
from google-guava。如果你不想使用外部依賴,那麼我認爲你必須推出自己的
可能的重複[將對象數組轉換爲它們的基本類型的數組。](http://stackoverflow.com/questions/564392 /將一個對象數組轉換爲它們的基元類型) – finnw 2011-02-01 15:55:14