在基元和盒装类型之间转换数组

有时需要将原始类型转换为盒装类型。

要转换数组,可以使用流(在 Java 8 及更高版本中):

Version >= Java SE 8

int[] primitiveArray = {1, 2, 3, 4};
Integer[] boxedArray = 
    Arrays.stream(primitiveArray).boxed().toArray(Integer[]::new);

对于较低版本,可以通过迭代原始数组并将其显式复制到盒装数组:

Version < Java SE 8

int[] primitiveArray = {1, 2, 3, 4};
Integer[] boxedArray = new Integer[primitiveArray.length];
for (int i = 0; i < primitiveArray.length; ++i) {
    boxedArray[i] = primitiveArray[i]; // Each element is autoboxed here
}

类似地,盒装数组可以转换为其原始对应的数组:

Version >= Java SE 8

Integer[] boxedArray = {1, 2, 3, 4};
int[] primitiveArray = 
    Arrays.stream(boxedArray).mapToInt(Integer::intValue).toArray();

Version < Java SE 8

Integer[] boxedArray = {1, 2, 3, 4};
int[] primitiveArray = new int[boxedArray.length];
for (int i = 0; i < boxedArray.length; ++i) {
    primitiveArray[i] = boxedArray[i]; // Each element is outboxed here
}