Sobes.tech
Junior — Middle

Aké princípy je potrebné použiť pri vytváraní triedy v Jave, aby bola nemenná?

sobes.tech AI

Odpoveď od AI

Ak chcete urobiť triedu v Jave nemennou (immutable), je potrebné dodržať niekoľko princípov:

  1. Vyhláste triedu ako final — aby sa nedala vytvoriť podtrieda, ktorá by menila správanie.
  2. Urobte všetky polia private a final — aby sa nedali zmeniť po inicializácii.
  3. Neposkytujte setterové metódy (metódy na zmenu polí).
  4. Inicializujte všetky polia cez konštruktor.
  5. Ak sú polia odkazmi na meniace sa objekty (napríklad pole, kolekcie), vytvárajte ich kópie pri priradení a pri vrátení z getterov, aby vonkajšie zmeny neovplyvnili vnútorný stav.

Príklad:

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;
    }
}

Takáto trieda po vytvorení objektu neumožňuje zmenu jeho stavu, čo je užitočné pre bezpečnosť vlákien a predvídateľnosť správania.