Sobes.tech
Junior — Middle

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

sobes.tech AI

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

Java-да өзгермес (immutable) объектілерді қамтитын сыныптар келесі артықшылықтар мен кемшіліктерге ие:

Артықшылықтар:

  • Жіптер қауіпсіздігі: өзгермес объектілер көпжіпті ортада синхрондаусыз қауіпсіз қолданылуы мүмкін.
  • Қарапайым түсіну: объектінің күйі құрудан кейін өзгермейді, бұл қателерді табуды және кодты түсінуді жеңілдетеді.
  • Кілт ретінде қолдану: мұндай объектілер коллекцияларында қолданылуы мүмкін, мұнда өзгермейтіндік маңызды (мысалы, HashMap-да), хэш-кодтың өзгеру қаупі жоқ.
  • Кэштеу және оңтайландыру: өзгермес объектілерді кэштеу және қайта пайдалану оңай.

Кемшіліктер:

  • Өнімділік: объектіні өзгерту үшін жаңа мысал құру керек, бұл қосымша жады мен уақыт шығынын әкелуі мүмкін.
  • Икемділік: объектінің күйін құрудан кейін өзгерте алмау кейбір сценарийлерді қиындатады, мұнда өзгермелілік талап етіледі.

Мысал — өзгермейтін сынып:

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 int getX() { return x; }
    public int getY() { return y; }
}