是否有内置的Java方法来装箱arrays?
是否有一种标准方法可以代替这种自定义方法?
public static Byte[] box(byte[] byteArray) { Byte[] box = new Byte[byteArray.length]; for (int i = 0; i < box.length; i++) { box[i] = byteArray[i]; } return box; }
不,JDK中没有这样的方法。
然而,通常情况下, Apache Commons Lang提供了这样一种方法 。
输入Java 8,您可以执行以下操作(装箱):
int [] ints = ... Integer[] boxedInts = IntStream.of(ints).boxed().toArray(Integer[]::new);
但是,这仅适用于int[]
, long[]
和double[]
。 这不适用于byte[]
。
您也可以轻松完成反向(拆箱)
Integer [] boxedInts = ... int [] ints = Stream.of(boxedInts).mapToInt(Integer::intValue).toArray();
除了YoYo的答案,你可以为任何原始类型做到这一点; 让primArray
成为PrimType[]
类型的标识符,然后您可以执行以下操作:
BoxedType[] boxedArray = IntStream.range(0, primArray.length).mapToObj(i -> primArray[i]).toArray(BoxedType[] :: new);