Как я клонирую массив байтов Java?

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

Как я клонирую массив байтов Java?

30
задан vaxquis 18 February 2016 в 21:42
поделиться

3 ответа

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

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

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

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

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

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

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

См. Также

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


Другие параметры

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

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

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

41
ответ дан 27 November 2019 в 23:44
поделиться

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

10
ответ дан 27 November 2019 в 23:44
поделиться

Это просто, и это отличная идея.

byte[] copy = arr.clone();

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

7
ответ дан 27 November 2019 в 23:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: