Junior — Middle
Milyen elveket kell alkalmazni Java osztály létrehozásakor, hogy az változatlan maradjon?
sobes.tech MI
Válasz az MI-től
Annak érdekében, hogy egy Java osztály immutable (változtathatatlan) legyen, néhány alapelvet be kell tartani:
- Jelölje az osztályt
final-ként — így nem lehet alosztályt létrehozni, amely megváltoztatja a viselkedést. - Tegye az összes mezőt
privateésfinal-ná — így azok az inicializálás után nem módosíthatók. - Ne biztosítson settereket (metódusokat a mezők módosítására).
- Minden mezőt a konstruktoron keresztül inicializáljon.
- Ha a mezők változtatható objektumokra mutató referenciák (pl. tömbök, kollekciók), akkor másolatokat készítsen azokból az értékadáskor és a getterekből való visszaadáskor, hogy a külső változtatások ne befolyásolják a belső állapotot.
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, ami hasznos a szálbiztonság és a viselkedés előre láthatósága szempontjából.