Junior — Middle
Quali aspetti devono essere considerati quando si crea una copia di un oggetto di una classe immutabile?
sobes.tech AI
Risposta dell'AI
Per una classe immutabile, creare una copia dell'oggetto di solito non richiede una clonazione profonda, poiché lo stato dell'oggetto non cambia dopo la creazione.
Aspetti principali:
- Se la classe è veramente immutabile, si può semplicemente restituire il riferimento allo stesso oggetto, poiché non cambierà.
- Se è necessario creare un nuovo oggetto con uno stato modificato, di solito si crea una nuova istanza con i parametri necessari.
- È importante che tutti i campi siano final e di per sé immutabili (ad esempio, String, tipi primitivi o collezioni immutabili).
Esempio:
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() {
// Si può semplicemente restituire this, poiché l'oggetto è immutabile
return this;
}
public ImmutablePoint withX(int newX) {
return new ImmutablePoint(newX, this.y);
}
}
Pertanto, la copia di un oggetto immutabile non è necessaria o viene creata come un nuovo oggetto con un nuovo stato.