Constructor copia java

Clon de Java

La copia de clases es un procedimiento de software común. Ocurre cada vez que se aplica un constructor de copia, o cuando un proceso necesita una copia para trabajar. Copiar clases de colección basadas en valores es sencillo. Pero surgen consideraciones especiales al copiar clases basadas en referencias, y las tratamos aquí.

¿Qué ocurre cuando se hace una copia de una clase de colección basada en referencias, o de cualquier clase que haga referencia a otro objeto? Depende de cuál de los dos enfoques generales elijas: copia superficial o copia profunda.

Ten en cuenta que algunas clases de colección basadas en referencias tienen una función miembro copy() que devuelve un nuevo objeto con variables de instancia completamente nuevas. Esta copia no se realiza de forma recursiva, y las nuevas variables de instancia son copias superficiales de las antiguas.

El enfoque de copia que elijas es importante. Por ejemplo, las copias superficiales pueden ser útiles y rápidas, porque se hacen menos copias, pero hay que tener cuidado porque dos colecciones ahora hacen referencia al mismo objeto. Si borras todos los elementos de una colección, dejarás la otra colección apuntando a un sinsentido.

Clase interior

Generalmente, el constructor de copia es un constructor que crea un objeto inicializándolo con un objeto de la misma clase, que ha sido creado previamente.Java admite para los constructores de copia pero a diferencia del lenguaje C, Java no proporciona un constructor de copia explícito tienes que definirlo tú mismo.Escribiendo un constructor de copiaPor lo general, para inicializar los valores de las variables de instancia de una clase (de una manera) creamos un constructor parametrizado aceptando los valores para todas las variables de instancia y las inicializamos con los valores dados.Nombre int;

  El ciclo de DevOps, una guía para iniciarse en las fases que lo componen

Constructor de copias

Los constructores de copia crean un nuevo objeto utilizando los valores de un objeto existente. Los constructores de copia son una alternativa a otros enfoques de clonación como la interfaz Cloneable. Estos constructores pueden crear clones tanto superficiales como profundos.

El constructor de copia, al igual que cualquier otro constructor, debe tener el mismo nombre que la clase. Un constructor de copia toma un objeto de la clase como parámetro. Inicializa los campos utilizando los valores del objeto de entrada. Vamos a crear un constructor de copia para una clase simple de Estudiante que contiene un campo nombre de cadena y un campo GPA doble.

En la sección anterior, el constructor de copia creó un clon superficial. Pero como la clase Student sólo contiene campos primitivos o inmutables, el clon no se ve afectado por los cambios en el objeto original.

  El developer feliz: qué buscamos y qué necesitamos

Si los campos de la clase son primitivos o inmutables, entonces la clonación superficial es lo mismo que la clonación profunda. Añadamos un campo de clase Address a nuestra clase Student y creemos una copia superficial desde nuestro constructor.

Como se ha comentado en las secciones anteriores, anulando el método clone() de la interfaz Cloneable también se puede crear una copia profunda. Sin embargo, hay algunas ventajas de utilizar el constructor de copia para crear una copia profunda.

Variable estática

En mi artículo anterior, Shallow and Deep Java Cloning, hablé de la clonación en Java en detalle y respondí a preguntas sobre cómo podemos usar la clonación para copiar objetos en Java, los dos tipos diferentes de clonación (Shallow y Deep), y cómo podemos implementar ambos. Si no lo has leído, por favor, sigue adelante.

Y super.clone() llamará a su vez a super.clone() y la cadena continuará hasta que la llamada llegue al método clone() de la clase Object, que creará una copia campo a campo de nuestro objeto y la devolverá.

  Cómo animar fácilmente el fondo degradado de un botón con CSS

Como todo, la clonación también tiene sus ventajas y desventajas. Sin embargo, la clonación en Java es más famosa por sus problemas de diseño, pero aún así, es la estrategia de clonación más común y popular presente hoy en día.

Todas estas opciones requieren el uso de alguna librería externa, además estas librerías también estarán usando Serialización o Copia de Constructores o Reflexión internamente para copiar nuestro objeto. Así que si no quieres ir con las opciones anteriores o quieres escribir tu propio código para copiar el objeto, entonces puedes usar

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad