Junior — Middle
Dəyişməz sinifin obyektinin nüsxəsini yaradarkən hansı aspektlər nəzərə alınmalıdır?
sobes.tech Süni İntellekt
AI-dan cavab
Dəyişməz (immutable) sinif üçün obyektin surətini yaratmaq adətən dərin klonlama tələb etmir, çünki obyektin vəziyyəti yaradıldıqdan sonra dəyişmir.
Əsas aspektlər:
- Əgər sinif həqiqətən dəyişməzdirsə, sadəcə həmin obyektə istinad qaytarmaq olar, çünki o dəyişməz qalacaq.
- Əgər dəyişdirilmiş vəziyyətlə yeni obyekt yaratmaq lazımdırsa, adətən lazım olan parametrlərlə yeni nümunə yaradılır.
- Bütün sahələrin final və özlərinin də dəyişməz olması vacibdir (məsələn, String, primitiv tiplər və ya dəyişməz kolleksiyalar).
Nümunə:
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() {
// Bu obyekt dəyişməz olduğu üçün, sadəcə this qaytarıla bilər
return this;
}
public ImmutablePoint withX(int newX) {
return new ImmutablePoint(newX, this.y);
}
}
Beləliklə, dəyişməz obyektin surəti ya lazım deyil, ya da yeni vəziyyətlə yeni obyekt kimi yaradılır.