Ответ 1
Нет, такого метода в JDK нет.
Однако, как это часто бывает, Apache Commons Lang предоставляет такой метод.
Есть ли стандартный метод, который я могу использовать вместо этого пользовательского метода?
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 вы можете сделать это для примитивного типа any; пусть primArray
будет идентификатором типа PrimType[]
, тогда вы можете сделать следующее:
BoxedType[] boxedArray = IntStream.range(0, primArray.length).mapToObj(i -> primArray[i]).toArray(BoxedType[] :: new);