Tengo una matriz de bytes que quiero copiar/clonar para evitar que el código de llamada modifique mi representación interna.
¿Cómo clono una matriz de bytes de Java?
Solución del problema
JLS 6.4.5 Los miembros de un tipo de matriz
Los miembros de un tipo de matriz son todos los siguientes:
- El
public final field length
, que contiene el número de componentes de la matriz (la longitud puede ser positiva o cero). - El
public
métodoclone
, que anula el método del mismo nombre en la claseObject
y no arroja excepciones comprobadas. El tipo de retorno del método de clonación de un tipo de matrizT[]
esT[]
. - Todos los miembros heredados de la clase
Object
; el único métodoObject
que no se hereda es suclone
método.
Por lo tanto:
byte[] original =...;
byte[] copy = original.clone();
Tenga en cuenta que para la matriz de tipos de referencia, clone()
es esencialmente una copia superficial.
Además, Java no tiene arreglos multidimensionales; tiene matriz de matrices. Por lo tanto, a byte[][]
es un Object[]
, y también está sujeto a una copia superficial.
Ver también
- Copia de Wikipedia/objeto
- Tuercas y tornillos/matrices de Java
Preguntas relacionadas
- Arreglos multidimensionales de clonación profunda en Java…?
- ¿Cómo copiar efectivamente una matriz en Java?
- Cómo copiar en profundidad una matriz 2D irregular
- ¿Cómo hago una copia profunda de una matriz 2d en Java?
Otras opciones
Tenga en cuenta que clone()
devuelve un nuevo objeto de matriz. Si simplemente desea copiar los valores de una matriz a una matriz ya existente, puede usar, por ejemplo System.arraycopy
, (jdk 1.0+).
También hay java.util.Arrays
.copyOf (jdk 1.6+) que le permite crear una copia con una longitud diferente (ya sea truncando o rellenando).
Preguntas relacionadas
- Diferencia entre varios métodos de copia de matriz
No hay comentarios.:
Publicar un comentario