Junior
Nədir dəyişməz obyektlər (immutable)?
sobes.tech Süni İntellekt
AI-dan cavab
Dəyişdirilə bilməyən obyektlər, yaradıldıqdan sonra vəziyyəti dəyişdirilə bilməz. Dəyişiklik cəhdində həmişə yeni obyekt yaradılır.
Java-da dəyişdirilməz siniflərə nümunələr:
String- Əsas təkərli qablar (
Integer,Long,Booleanvə s.) - Bəzi kolleksiyalar (
Collections.unmodifiableList(), Guava-danImmutableList)
Üstünlüklər:
- İplə təhlükəsizlik (birgə girişdə sinxronizasiya tələb etmir).
- İstifadə asanlığı (obyektin vəziyyəti asanlıqla başa düşülür).
- HashMap-də açar və ya Set-də element kimi istifadə oluna bilər (hashCode və equals() dəyişmir).
- Keşləmə və təkrar istifadə ilə performansı artırır.
Əksikliklər:
- Hər dəyişiklikdə yeni obyektin yaradılması tez-tez dəyişikliklər üçün səmərəli olmaya bilər.
Özünüz yaratmaq:
- Sinfi
finalkimi elan edin. - Bütün sahələri özəl və
finaledin. - Setter metodları təmin etməyin.
- Dəyişən sahələr üçün getter-lərdə, orijinal obyektlərə referans yerinə nüsxələrini qaytarın.
public final class ImmutablePerson {
private final String name;
private final int age;
private final List<String> hobbies;
public ImmutablePerson(String name, int age, List<String> hobbies) {
this.name = name;
this.age = age;
// Xaricdən dəyişiklikləri qarşısını almaq üçün nüsxə yaradılır
this.hobbies = new ArrayList<>(hobbies);
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public List<String> getHobbies() {
// Dəyişdirilməz siyahı qaytarılır
return Collections.unmodifiableList(hobbies);
}
}