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