Junior — Middle
Какви аспекти трябва да се вземат предвид при създаването на копие на обект от неизменяем клас?
sobes.tech AI
Отговор от AI
За неизменяем (immutable) клас създаването на копие на обекта обикновено не изисква дълбоко клониране, тъй като състоянието на обекта не се променя след създаването му.
Основни аспекти:
- Ако класът е наистина неизменяем, може просто да върнете препратката към същия обект, тъй като той няма да се промени.
- Ако трябва да създадете нов обект с променено състояние, обикновено създавате нов екземпляр с необходимите параметри.
- Важно е всички полета да са финални и сами по себе си неизменяеми (например String, примитиви или неизменяеми колекции).
Пример:
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() {
// Може просто да върнете this, тъй като обектът е неизменяем
return this;
}
public ImmutablePoint withX(int newX) {
return new ImmutablePoint(newX, this.y);
}
}
Следователно, копието на неизменяем обект или не е необходимо, или се създава като нов обект с ново състояние.