setear - pasar valor por referencia en java




Cómo copiar un objeto por valor, no por referencia (5)

¿No puedes simplemente hacer un constructor de copia? Por cierto, Java siempre pasa las referencias por valor, por lo que sigue apuntando al mismo objeto.

Esta pregunta ya tiene una respuesta aquí:

Quiero hacer una copia de un objeto, luego, después de alguna lógica, reasignar al objeto original el valor de la copia.

ejemplo:

User userCopy = //make a copy

foreach(...)
{
  user.Age = 1;
  user.ID = -1;

  UserDao.Update(user)


  user = userCopy; 

}

No quiero una copia por referencia, tiene que ser una copia por valor.

Lo anterior es solo una muestra, no cómo realmente quiero usarla, pero necesito aprender a copiar por valor.


¿Qué lenguaje es este? Si está usando un lenguaje que pasa todo por referencia como Java (excepto los tipos nativos), normalmente puede llamar .clone() método .clone() . El método .clone () se implementa normalmente copiando / clonando todos los campos de instancia relevantes en el nuevo objeto.


Creo que .clone() es lo que estás buscando, siempre y cuando la clase lo apoye.


Debe hacer una copia detallada del usuario a la copia del usuario, y luego, después de iniciar sesión, puede reasignar su referencia de usuario copia al usuario.

User userCopy = new User();
userCopy.Age = user.Age
userCopy.ID = user.ID

foreach(...) 
{ 
  user.Age = 1; 
  user.ID = -1; 

  UserDao.Update(user)     

  user = userCopy;       
}

Sé que esto es un poco tarde pero podría ayudar a alguien.

En mi caso, ya tenía un método para hacer el objeto a partir de un objeto json y hacer json a partir del objeto. con esto, simplemente puede crear una nueva instancia del objeto y usarlo para restaurar. Por ejemplo, en una función analizando un objeto final

public void update(final Object object){ 
  final Object original = Object.makeFromJSON(object.toJSON()); 
  // the original is not affected by changes made to object 
}





java