Junior
Değiştirilemez nesneler (immutable) nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Değiştirilemeyen nesneler, oluşturulduktan sonra durumu değiştirilemez. Değiştirme girişiminde her zaman yeni bir nesne oluşturulur.
Java'da değiştirilemez sınıflara örnekler:
String- İlkel sarmalayıcılar (
Integer,Long,Booleanvb.) - Bazı koleksiyonlar (
Collections.unmodifiableList(), Guava'danImmutableList)
Avantajlar:
- İş parçacığı güvenliği (eşzamanlı erişimde senkronizasyon gerekmez).
- Kullanım kolaylığı (nesnenin durumu kolayca anlaşılır).
- HashMap anahtarı veya Set öğesi olarak kullanılabilirler (hashCode ve equals() değişmez).
- Önbelleğe alma ve tekrar kullanım sayesinde performansı artırırlar.
Dezavantajlar:
- Her değişiklikte yeni nesne oluşturmak, sık değişen durumlar için verimli olmayabilir.
Kendi oluşturma:
- Sınıfı
finalolarak ilan edin. - Tüm alanları özel ve
finalyapın. - Setter metodları sağlamayın.
- Değişken alanlar için getter'larda, orijinal nesnelere referans yerine kopyalarını döndürü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;
// Dışarıdan değişikliği önlemek için kopya oluştur
this.hobbies = new ArrayList<>(hobbies);
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public List<String> getHobbies() {
// Değiştirilemez liste döndür
return Collections.unmodifiableList(hobbies);
}
}