Sobes.tech
Junior — Middle

რისი უნდა გაითვალისწინოს უცვლელი კლასი ობიექტის ასლის შექმნისას?

sobes.tech AI

პასუხი AI-სგან

მიუხედავად იმისა, რომ უცვლელი (immutable) კლასი, ობიექტის ასლის შექმნა ჩვეულებრივ არ საჭიროებს სიღრმისეული კლონირებას, რადგან ობიექტის მდგომარეობა შექმნის შემდეგ არ იცვლება.

ძირითადი ასპექტები:

  • თუ კლასი ნამდვილად უცვლელია, შეიძლება უბრალოდ იგივე ობიექტის მითითება დაბრუნდეს, რადგან ის არ შეიცვლება.
  • თუ საჭიროა ახალი ობიექტის შექმნა შეცვლილი მდგომარეობით, ჩვეულებრივ, ახალი ინстанცია იქმნება საჭირო პარამეტრებით.
  • მნიშვნელოვანია, რომ ყველა ველი იყოს საბოლოო და თვითონაც უცვლელი (მაგალითად, String, primitive ტიპები ან უცვლელი კოლექციები).

მაგალითი:

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() {
        // შეიძლება უბრალოდ this დაბრუნდეს, რადგან ობიექტი უცვლელია
        return this;
    }

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

ამიტომ, უცვლელი ობიექტის ასლი ან საჭირო არ არის, ან ახალი მდგომარეობით ახალი ობიექტი იქმნება.