Konstanty

Tomáš Pitner, Radek Ošlejšek, Marek Šabo
tomp@fi.muni.cz

Konstanty v Javě

  • Konstanty slouží pro pojmenování určitých konkrétních hodnot se zvláštním významem v programu — tzv. magic numbers, kde nemusí být na první pohled zřejmé, proč je to zrovna právě ta hodnota.
  • Proto si ji rozumně pojmenujeme a pak používáme tento identifikátor místo přímé hodnoty.
  • Může jít i o objektové typy (např. konstanta typu Person).
Všeobecně platí: raději víc konstant než míň.

Definice konstanty

  • Konstanty jsou vždy:

    • statické (static) — stačí nám jedna pro celou třídu
    • neměnné (final) — je to konstanta, tudíž pomocí final zajistíme neměnnost

  • Konstanta může být:

    • privátní (dobře možné, když ji nechceme používat mimo třídu)
    • veřejná (nicméně asi obvyklejší, většinou má širší použití)

Příklad konstanty

  • Obvykle se nastavuje takto přímo přiřazením hodnoty
public static final int MAX_PEOPLE_COUNT = 100;
public boolean maxPeopleCountReached() {
  return peopleCount >= MAX_PEOPLE_COUNT;
}
...
int constant = Person.MAX_PEOPLE_COUNT;

Klíčové slovo final

  • Slovo final způsobuje, že daná hodnota se v proměnné nemůže změnit.
  • V objektové proměnné je uložena adresa (odkaz),
  • final odkaz se tedy změnit nemůže, ale vnitřek (atributy) objektu ano
  • Proto se může kombinovat s neměnnými (immutable) objekty, u nichž se vnitřek nemění

Příklad final objektová proměnná

final int i = 1;
i = 2; // cannot be done

final Person p = new Person("Honza");
p = new Person("Pavel"); // cannot be done
p.setName("Pavel"); // dirty hack
Konstanty mají kromě slova final i slovo static protože ji chceme právě jednou.

/