Junior — Middle
Hogyan lehet megvalósítani egy osztályt úgy, hogy állapota a létrehozás után változatlan maradjon?
sobes.tech MI
Válasz az MI-től
Az Java-ban való megváltoztathatatlan (immutable) osztály létrehozásához:
- Tegye az osztályt
final-ná, hogy ne öröklődhessen vagy változtathassa a viselkedését. - Az osztály összes mezőjét
private final-ként deklarálja. - Minden mezőt a konstruktoron keresztül inicializáljon.
- Ne biztosítson settereket (metódusokat a mezők módosítására).
- Ha a mezők módosítható objektumok (pl. tömbök, kollekciók), akkor másolatokat készítsen róluk a konstruktorban és a getterekből való visszaadáskor.
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 osztály, az objektum létrehozása után, nem engedi az állapotának megváltoztatását.