Kā Java nodrošina nemainīgumu?
sobes.tech AI
Atbilde no AI
Java nodrošina imutabilitāti ar šādiem līdzekļiem:
-
Klases paziņošana kā
final: Klase nav iespējams mantoēt, kas novērš mutablu apakšklasēm veidošanos. -
Visu lauku paziņošana kā
final: Lauks var tikt piešķirts tikai vienu reizi (inicializācijas vai konstruktorā) un pēc tam to vairs nevar mainīt. -
Lauku privātums: Lauki jābūt privātiem (
private), lai novērstu tiešu piekļuvi un mainīšanu ārpus klases. -
Nav sētteru vai metožu, kas maina objekta stāvokli: Klase nedrīkst nodrošināt publiskas metodes, kas var mainīt objekta lauku vērtības pēc tā izveides.
-
Pareiza mutablo lauku pārvaldība: Ja klase satur atsauces uz mutabliem objektiem (piemēram,
Listvai savu mutablo klasi), ir jā:- Izveido to kopijas inicializācijas laikā (konstruktors).
- Atgriež to kopijas getteros, lai novērstu objekta iekšējā stāvokļa maiņu no ārpuses.
public final class ImmutableExample { // final klase
private final String name; // final un privāts lauks
private final List<String> items; // final un privāts lauks
public ImmutableExample(String name, List<String> items) {
this.name = name;
// Izveidot aizsargātu mutablo saraksta kopiju
this.items = new ArrayList<>(items);
}
public String getName() {
return name;
}
public List<String> getItems() {
// Atgriezt aizsargātu mutablo saraksta kopiju
return Collections.unmodifiableList(new ArrayList<>(items));
}
// Nav sētteru vai stāvokļa maiņas metožu
}
Java iekšienē ir mutabli klases piemēri: String, primāro tipu apvalki (Integer, Long utt.), BigInteger, BigDecimal.