Java - statický import

Abychom mohli přistupovat k statickým členům, je nezbytné kvalifikovat odkazy jménem třídy. Například musíte napsat:

	double r = math.cos(Math.PI * theta);

Aby se lidé vyhnuli této nutnosti, vkládají někdy statické členy do rozhraní a pak toto rozhraní rozšíří. To není dobrý nápad. Popravdě, je to tak špatný nápad, že pro něj existuje i jméno: Antivzor statické rozhraní. Problém je že pokud třída používá statické členy jiné třídy, pak je to její implementační detail. Pokud však taková třída implementuje ono rozhraní, stane se to součástí veřejného API. Implementační detaily by se neměly stát součástí veřejného API.

Konstrukce statického importu dovoluje nekvalifikovaný přístup k statickým členům bez dědění typu obsahujícího statické členy. Místo toho program importuje tyto členy buď individuálně:

import static java.lang.Math.PI;

nebo hromadně:

import static java.lang.Math.*;

Pokud byly statické členy importovány, můžeme k nim přistupovat bez nutnosti kvalifikace:

	double r = cos.(PI * theta);

Deklarace statického importu je podobná deklaraci běžného importu. Zatímco běžná deklarace importu importuje třídy z balíčku, což umož�uje jejich použití bez nutnosti kvalifikovat je názvem balíčku, deklarace statického importu impotuje statické členy tříd, což umož�uje jejich použití bez nutnosti kvalifikovat je názvem třídy.

Takže kdy byste měli používat statického importu? Velmi zřídka! Jen pokud byste jinak museli deklarovat lokální kopie konstant nebo zneužít rozhraní. Jinými slovy používejte jej pokud potřebujete často přistupovat k statickým členům jedné nebo dvou tříd. Pokud tuto možnost budete využívat příliš často, může být váš program nečitelný a těžce udržovatelný, a zahltí svůj jmenný prostor všemi statickými členy které jste importovali. Čtenáři vašeho kódu (včetně vás po několika měsících když se vrátíte ke svému kódu) nebudou tušit z které třídy ten který člen pochází. Import všech statických členů třídy může velmi ublížit čitelnosti a pokud potřebujete pouze jeden bebo dva členy, importujte je individuálně. Pokud tuto vlastnost budete užívat správně, může zvýšit čitelnost vašich programů tím že odstraníte všechen ten přebytečný kód opakujících se názvů tříd.