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);
}
}
ამიტომ, უცვლელი ობიექტის ასლი ან საჭირო არ არის, ან ახალი მდგომარეობით ახალი ობიექტი იქმნება.