Dava vam nejaky smysl tahle podminka?
if ((file != null) && (!file.exists() || !file.isFile()))
Podle me to moc smysl nedava. Pouzil bych:
if (!file.exists() || !file.isFile())
#5 Anonym
Ne. NullObject je něco jiného. Má stejné rozhraní jako běžný objekt, ale při volání metod obvykle nic nedělá, protože je má prázdné, bez příkazů. Používá se to právě pro zjednodušení volání bez testu na null. Například pokud chceš vypnout logování, logovací objekt uděláš typu NullObject. Když pak odněkud zavoláš
log.error("Chybové hlášení");
nestane se vůbec nic. Takové logování si však kdykoli můžeš zapnou tak, že do "log" přiřadíš instanci logovací třídy. Je to velmi praktické.
#7 Anonym
Loggable log = new NullLog();
// na jiném místě:
log.error("Chybová hláška");
// Metoda error() nebude nic dělat a nic se nevypíše.
// Jindy, např. dle příznaku v konfiguraci, vytvoříš instanci jinak:
Loggable log = new Log("file.log");
// v ostatních místech programu však stále zůstává:
log.error("Chybová hláška");
// Chybová hláška se zapíše do souboru.
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku