Javaда иммутабилдүүлүк кандай камсыз кылынат?
sobes.tech AI
AIден жооп
Javaда өзгөрүлмө болуу төмөнкү жолдор менен камсыздалат:
-
Класс
finalдеп жарыялоо: Класс мурас алууга болбойт, бул өзгөрүлмө подкласс түзүүнүн алдын алат. -
Бардык талааларды
finalдеп жарыялоо: Талаанын мааниси бир гана жолу берилет (инициализация учурунда же конструктордо) жана объект түзүлгөндөн кийин өзгөртүлбөйт. -
Талалардын жеке болушу: Талалар
privateболушу керек, ошондуктан түздөн-түз кирүү жана өзгөртүү сырттан болбойт. -
Setterлер же объекттин абалын өзгөртүүчү методдордун жоктугу: Класс түзүлгөндөн кийин талаалардын маанилерин өзгөртө турган коомдук методдорду камсыз кылбоо керек.
-
Өзгөрүлмө талаалар менен туура иштөө: Эгер класс өзгөрүлмө объекттерге шилтемелерди камтыса (мисалы,
Listже өзүнүн өзгөрүлмө классы), анда:- аларды баштапкы түзүүдө көчүрмөлөрүн түзүү керек (конструктордо)
- сырттан өзгөртүүнү алдын алуу үчүн getterлерде көчүрмөлөрүн кайтаруу керек.
public final class ImmutableExample { // акыркы класс
private final String name; // акыркы жана жеке талаа
private final List<String> items; // акыркы жана жеке талаа
public ImmutableExample(String name, List<String> items) {
this.name = name;
// корголгон көчүрмө түзүү
this.items = new ArrayList<>(items);
}
public String getName() {
return name;
}
public List<String> getItems() {
// корголгон көчүрмө кайтаруу
return Collections.unmodifiableList(new ArrayList<>(items));
}
// өзгөртүүнү камсыздаган setterлер же методдор жок
}
Javaда ички өзгөрүлмө эмес класс мисалдары: String, негизги түрлөрдүн обертка класстары (Integer, Long жана башка), BigInteger, BigDecimal.