Sobes.tech
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:

  1. A osztályt final-ként deklaráljuk, hogy megakadályozzuk az öröklést és a viselkedés módosítását.
  2. Minden mezőt private és final-ként teszünk, hogy azok az inicializálás után ne módosíthatók legyenek.
  3. Nem biztosítunk settereket (metódusokat a mezők módosítására).
  4. Minden mezőt a konstruktoron keresztül inicializálunk.
  5. 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.