Java Immutable (Değişmez) Sınıflar

Immutable (değişmez) sınıflar, nesneleri bir kez oluşturulduktan sonra nesne içeriği değiştirilemeyen sınıflardır. Bir nevi sabit sınıflardır diyebiliriz. Örneğin, Java’da String sınıfı değişmez sınıflardan bir tanesidir. Diğer bilinen değişmez sınıflardan bazıları, Integer, Double, Boolean, BigDecimal sınıflarıdır.

Gelin şimdi hem değişmez sınıfların özelliklerini görmek adına hem de değişmez bir sınıf nasıl yaratılır onu görmek adına bir sınıf yazalım.

public final class ImmutableMutant {
    
    private final String name;
    private final int numberOfArms;
    private final int numberOfLegs;
    
    public ImmutableMutant(final String name, final int numberOfArms,
                            final int numberOfLegs) {
        this.name = name;
        this.numberOfArms = numberOfArms;
        this.numberOfLegs = numberOfLegs;        
    }
    
    public String getName() {
        return name;
    }
    
    public int getNumberOfArms() {
        return numberOfArms;
    }
    
    public int getNumberOfLegs() {
        return numberOfLegs;
    }
}

Kodu incelediğimizde sınıfın final bir sınıf olduğunu görüyoruz. Sınıfı final olarak tanımlamanın amacı, sınıfın başka sınıflar tarafından extend edilmesini (türetilmesini) engellemek. Yani, final sınıfların alt sınıfları olmaz. Dolayısıyla değişmez sınıflardan herhangi bir şekilde başka sınıflar türetilemez.

İkinci olarak, sınıfın tüm elemanları private ve final‘dır. Yani, sınıf içinden veya dışından herhangi bir şekilde değiştirilemez.

Üçüncü olarak, sınıfın tüm elemanları sadece constructor vasıtasıyla ilklendirilebilir.

Ve son olarak, sınıf elemanlarını dışardan değiştirebilecek metodlar (setter metodları) yoktur.

Şimdi de değişmez sınıfların özellikleri ve avantajlarından bahsedelim. Değişmez sınıf nesneleri kesinlikle thread korumalıdır (thread-safe). Çünkü, bir kez oluşturulduktan sonra içeriği değiştirilemez bu da threadlerde kullanımda ortaya çıkabilecek senkronizasyon sorunlarını ortadan kaldırır. Değişmez sınıf nesnelerinin içerikleri değişmeyeceği için program akışı içerisinde içerikte istenmeyen değişikliklerin olmasının önüne geçilebilecektir. Değişmez sınıf nesnelerini gönül rahatlığıyla başka referanslara atayabilirsiniz. Örneğin, bir metoda yolladığınızda o metod içerisinde nesnenin değişmeyeceğini garanti etmiş olursunuz.

4 Comments

    Java Immutable (Değişmez) Sınıflar « Lé Blog

    […] Örneğin, Java’da String sınıfı değişmez sınıflardan bir tanes… Devamı için : Java Immutable (Değişmez) Sınıflar Share :FacebookTwitterStumbleUponLinkedInLike this:LikeBe the first to like this […]

    Java Immutable (Değişmez) Sınıflar | Boğaç Aslanyürek

    […] Örneğin, Java’da String sınıfı değişmez sınıflardan bir tanes… Devamı için : Java Immutable (Değişmez) Sınıflar This entry was posted in Professional and tagged final class, final sınıf, java immutable […]

    Java Immutable (Değişmez) Sınıflar « Musa Usta'nın Yeri

    […] Örneğin, Java’da String sınıfı değişmez sınıflardan bir tanes… Devamı için : Java Immutable (Değişmez) Sınıflar Share this:TwitterFacebookLike this:BeğenBe the first to like this post.   Leave a […]

    Java Immutable (Değişmez) Sınıflar | Gökhan Tunçkale | Blog

    […] Örneğin, Java’da String sınıfı değişmez sınıflardan bir tanes… Devamı için : Java Immutable (Değişmez) Sınıflar ShareFacebookTwitterStumbleUponMoreTumblrRedditLinkedInDiggEmailPrintLike this:BeğenBe the first […]

Bir Cevap Yazın