Junior — Middle
Java'da sinf yaratishda uni o'zgarmas qilish uchun qanday tamoyillarni qo'llash kerak?
sobes.tech AI
AIdan javob
Java'da sinfni o'zgarmas (immutable) qilish uchun bir nechta tamoyillarni bajarish kerak:
- Sinfni
finaldeb e'lon qilish — shunda undan voris sinf yaratib, uning xulq-atvorini o'zgartirish mumkin bo'lmaydi. - Barcha maydonlarni
privatevafinalqilish — shunda ular faqat bir marta, initsializatsiya paytida o'rnatiladi va keyin o'zgartirilmaydi. - Setters (maydonlarni o'zgartirish uchun metodlar) taqdim etmaslik.
- Barcha maydonlarni konstruktor orqali initsializatsiya qilish.
- Agar maydonlar o'zgartiriladigan ob'ektlarga (masalan, massivlar, kolleksiyalar) havolalar bo'lsa, ularni tayinlash va getterlardan chiqarishda nusxalarini yaratish, shunda tashqi o'zgarishlar ichki holatga ta'sir qilmaydi.
Misol:
public final class ImmutablePerson {
private final String name;
private final int age;
public ImmutablePerson(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
Bunday sinf, ob'ekt yaratgandan so'ng, uning holatini o'zgartirish imkonini bermaydi, bu esa ip xavfsizligi va xulq-atvorining oldindan aytib bo'ladiganligi uchun foydalidir.