Junior — Middle
Jakie aspekty należy wziąć pod uwagę przy tworzeniu kopii obiektu niezmiennej klasy?
sobes.tech AI
Odpowiedź od AI
Dla niezmiennej (immutable) klasy tworzenie kopii obiektu zazwyczaj nie wymaga głębokiego klonowania, ponieważ stan obiektu nie zmienia się po jego utworzeniu.
Główne aspekty:
- Jeśli klasa jest naprawdę niezmienna, można po prostu zwrócić odwołanie do tego samego obiektu, ponieważ się nie zmieni.
- Jeśli trzeba utworzyć nowy obiekt ze zmienionym stanem, zwykle tworzy się nową instancję z potrzebnymi parametrami.
- Ważne jest, aby wszystkie pola były finalne i same w sobie niezmienne (np. String, typy prymitywne lub niezmienne kolekcje).
Przykład:
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() {
// Można po prostu zwrócić this, ponieważ obiekt jest niezmienny
return this;
}
public ImmutablePoint withX(int newX) {
return new ImmutablePoint(newX, this.y);
}
}
W związku z tym, kopia niezmiennego obiektu jest albo niepotrzebna, albo tworzona jako nowy obiekt z nowym stanem.