Junior — Middle
Milyen módszerekkel valósítható meg az osztályok változhatatlansága a programozásban?
sobes.tech MI
Válasz az MI-től
A Java-ban az immutable (változtathatatlan) osztályok megvalósításához általában a következő módszereket alkalmazzák:
- A osztályt
final-ként deklaráljuk, hogy megakadályozzuk az öröklést és a viselkedés módosítását. - Minden mezőt
privateésfinal-ként teszünk, hogy azok az inicializálás után ne módosíthatók legyenek. - Nem biztosítunk settereket (metódusokat a mezők módosítására).
- Minden mezőt a konstruktoron keresztül inicializálunk.
- Ha a mezők módosítható objektumokra mutató hivatkozásokat tartalmaznak, akkor azok másolatait készítjük a konstruktorban és a getterekből való visszaadáskor (védelem a külső változtatások ellen).
Példa:
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;
}
}
Ez a típusú osztály, az objektum létrehozása után, nem teszi lehetővé az állapotának módosítását.