public static final int MAX_PEOPLE_COUNT = 100;
public boolean maxPeopleCountReached() {
return peopleCount >= MAX_PEOPLE_COUNT;
}
...
int constant = Person.MAX_PEOPLE_COUNT;
Tomáš Pitner, Radek Ošlejšek, Marek Šabo
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íň. |
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í)
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;
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í
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. |