Junior — Middle
¿Qué aspectos se deben tener en cuenta al crear una copia de un objeto de una clase inmutable?
sobes.tech AI
Respuesta de la IA
Para una clase inmutable, crear una copia del objeto generalmente no requiere una clonación profunda, ya que el estado del objeto no cambia después de su creación.
Aspectos principales:
- Si la clase es realmente inmutable, simplemente se puede devolver la referencia al mismo objeto, ya que no cambiará.
- Si se necesita crear un nuevo objeto con un estado modificado, normalmente se crea una nueva instancia con los parámetros necesarios.
- Es importante que todos los campos sean final y en sí mismos inmutables (por ejemplo, String, tipos primitivos o colecciones inmutables).
Ejemplo:
public final class ImmutablePoint {
private final int x;
private final int y;
public ImmutablePoint(int x, int y) {
this.x = x;
this.y = y;
}
public ImmutablePoint copy() {
// Se puede simplemente devolver this, ya que el objeto es inmutable
return this;
}
public ImmutablePoint withX(int newX) {
return new ImmutablePoint(newX, this.y);
}
}
Por lo tanto, la copia de un objeto inmutable no es necesaria o se crea como un nuevo objeto con un nuevo estado.