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; }
}