Junior — Middle
Welke aspecten moeten worden overwogen bij het maken van een kopie van een object van een onveranderlijke klasse?
sobes.tech AI
Antwoord van AI
Voor een immutable klasse vereist het maken van een kopie van het object meestal geen diepe klooning, omdat de toestand van het object na creatie niet verandert.
Belangrijkste aspecten:
- Als de klasse echt immutable is, kan je gewoon de verwijzing naar hetzelfde object teruggeven, omdat het niet zal veranderen.
- Als je een nieuw object met een gewijzigde toestand moet maken, wordt meestal een nieuw exemplaar gemaakt met de benodigde parameters.
- Het is belangrijk dat alle velden final zijn en zelf ook immutable (bijvoorbeeld String, primitieve types of immutable collecties).
Voorbeeld:
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() {
// Je kunt gewoon this teruggeven, omdat het object immutable is
return this;
}
public ImmutablePoint withX(int newX) {
return new ImmutablePoint(newX, this.y);
}
}
Dus, de kopie van een immutable object is ofwel niet nodig, of wordt gemaakt als een nieuw object met een nieuwe toestand.