Подтвердить что ты не робот

Как клонировать массив байтов java?

У меня есть байтовый массив, который я хочу скопировать/клонировать, чтобы избежать вызова кода из моего внутреннего представления.

Как клонировать массив байтов java?

4b9b3361

Ответ 1

JLS 6.4.5 Члены типа массива

Элементы типа массива являются следующими:

  • public final field length, который содержит количество компонентов массива (длина может быть положительной или нулевой).
  • Метод public clone, который переопределяет метод с тем же именем в классе Object и не отменяет проверенных исключений. Возвращаемым типом метода clone типа массива T[] является T[].
  • Все члены, унаследованные от класса Object; единственным методом Object, который не наследуется, является его метод clone.

Таким образом:

byte[] original = ...;
byte[] copy = original.clone();

Обратите внимание, что для массива ссылочных типов clone() по существу является мелкой копией.

Кроме того, Java не имеет многомерных массивов; он имеет массив массивов. Таким образом, a byte[][] является Object[] и также подчиняется мелкой копии.

См. также

Связанные вопросы


Другие опции

Обратите внимание, что clone() возвращает новый объект массива. Если вы просто хотите скопировать значения из одного массива в уже существующий массив, вы можете использовать, например. System.arraycopy.

Там также java.util.Arrays.copyOf, который позволяет вам создать копию с другой длиной (либо усечением, либо дополнением).

Связанные вопросы

Ответ 2

System.arraycopy(src, 0, dst, 0, src.length);

Ответ 3

Это легко, и это отличная идея сделать это.

byte[] copy = arr.clone();

Обратите внимание, что возвращаемый тип метода clone() массивов - это тип массива, поэтому никакого приведения не требуется.

Ответ 4

Во избежание возможного исключения Null Pointer я использую следующий синтаксис:

byte[] copy = (arr == null) ? null : arr.clone();