V navaznosti na tuto diskuzi bych rad poznamenal, ze jednim z navrhu na
vylepseni Javy je Automatic Resource Management. Misto

static String readFirstLineFromFile(String path) throws IOException {

        BufferedReader br = new BufferedReader(new FileReader(path));

        try {

            return br.readLine();

        } finally {

            br.close();

        }

    }

bychom pak mohli psat

    static String readFirstLineFromFile2(String path) throws IOException {

        try (BufferedReader br = new BufferedReader(new FileReader(path)) {

           return br.readLine();

        }

    }

K zavreni streamu br dojde automaticky po opusteni bloku try. Mimochodem,
C# to ma.

Z.T.
-- 
Zdenek Tronicek
FIT CTU in Prague


Filip Jirsák napsal(a):
> Přičemž k těm nejjednodušším programovým konstrukcím patří třeba to, že
> každá funkce dělá právě jednu činnost, a to tu, která je zdokumentovaná.
> Takže například metoda setVisible(boolean) nastavuje viditelnost objektu,
> a
> nesnaží se uhodnou, jestli si programátor náhodou neplete viditelnost s
> existencí.
>
> Existují programovací jazyky, které se jednoduchosti použití snaží docílit
> tím, že před programátorem spoustu věcí skrývají a snaží se je nějak
> vyřešit
> za něj, ale Java je přesný opak takových jazyků. Java je assembler nad JVM
> a
> její jednoduchost spočívá v tom, že stojí na několika základních
> jednoduchých principech. To ale nemá nic společného s tím, že by se
> překladač nebo běhové prostředí nějak pokoušely uhodnout, co programátor
> chtěl – právě naopak. Nenechte se mást tím, že má Java GC, který něco dělá
> zdánlivě automaticky a bez dohledu uživatele. Za prvé jsou pravidla pro
> programování s tímto typem GC možná jednodušší, než pravidla pro
> programování s explicitní alokací paměti, za druhé ta automatika není mezi
> uživatelským programem a JVM, ale mezi JVM a systémem. Je to asi na stejné
> úrovni, jako je pro nativní programy přerovnávání instrukcí procesorem –
> tedy daleko za hranicí toho, co běžně potřebujete. Pro běžné případy ale
> úplně stačí vědět, že dokud existují na objekt tvrdé odkazy, je objekt
> dostupný a zabírá místo v paměti.
>
> Jinak je myslím zbytečné dál toto téma rozebírat, buďte rád, že jste se
> něco
> o správě odkazů v Javě dozvěděl už teď při takovéhle jednoduché
> záležitosti
> – třeba při vícevláknovém programování je někdy potřeba vědět o vzniku a
> zániku referencí mnohem podrobněji, protože můžete třeba snadno pracovat s
> objektem, který ještě nebyl zcela vytvořen.
>
> Filip Jirsák
>
> Lepsi kdyz to studuje expert, nez amater. Nakonec expert by to mozna
>> napsal lepe v C++. Proto je Java tak oblibena, ze se v ni chyb da
>> delat mene a jsou snadneji odhalitelne.
>>
>> Situace je jina, pokud mate aplikaci, kterou od zacatku do konce
>> vyvijite sam nebo aspon nad vyvojem mate dohled. V beznem zivote ale
>> na vas spadne existujici aplikace (nebo lepe nekolik aplikaci), na
>> ktere se behem radu let vystridala rada lidi s ruznym stupnem znalosti
>> Javy, Swingu (a pripadne hafo dalsich knihoven). Pak jste vdecny za co
>> nejjednodussi programove konstrukce, ve kterych nelze udelat chyba.
>

Odpovedet emailem