Sobes.tech
Junior — Middle

Değiştirilemez bir sınıfın nesnesinin kopyasını oluştururken hangi yönler dikkate alınmalıdır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Değiştirilemez (immutable) bir sınıf için, nesnenin kopyasını oluşturmak genellikle derin kopyalama gerektirmez, çünkü nesnenin durumu oluşturulduktan sonra değişmez.

Ana noktalar:

  • Eğer sınıf gerçekten değiştirilemezse, aynı nesneye referansı döndürmek yeterlidir, çünkü değişmeyecektir.
  • Eğer durumu değiştirilmiş yeni bir nesne oluşturulması gerekiyorsa, genellikle gerekli parametrelerle yeni bir örnek oluşturulur.
  • Tüm alanların final olması ve kendilerinin de değiştirilemez olması önemlidir (örneğin, String, ilkel tipler veya değiştirilemez koleksiyonlar).

Örnek:

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 nesne değiştirilemez olduğu için, doğrudan this dönebiliriz
        return this;
    }

    public ImmutablePoint withX(int newX) {
        return new ImmutablePoint(newX, this.y);
    }
}

Bu nedenle, değiştirilemez bir nesnenin kopyası genellikle gerekmez veya yeni bir durumla yeni bir nesne olarak oluşturulur.