Takže dělá prostě něco jako toto:

    static void zmenPoleBajtu(byte[] b) {
        b[0] = 'd';
        b[1] = 'e';
        b[2] = 'f';
    }

Díky! Už jsem doma! Proč jste to neřekl hned? :-) Ono je to s těmi
referencemi poměrně složité. Alespoň pro mojí hlavu :-) A jak tu někdo říkal
tak asi hodně programátorů prostě jen používá a nepřemýšlí co se přesně
děje. A čím víc umí Springů, J2EE a všeho podobného tím víc je možná
zarážející, že ty úplné nej low-level základy pokulhávají. Jako vysocí
matematici nemějí pak spočítat, kolik jim májí vrátit v krámě :-)

Děkuji pane Novotný za vysvětlení!
Libor

Dne 4. dubna 2011 13:42 Robert Novotny <[email protected]> napsal(a):

>  Ona nemeni pole, ona meni prvky tohto pola.
>
>
> On 4. 4. 2011 13:33, Libor Jelinek wrote:
>
> Děkuji pane Thone,
> to tedy znamená, že znovu nechápu jak může read(byte[] b) z např.
> FileInputStream měnít hodnotu parametru, když je mu předána nikoli
> reference, ale nový objekt se stejnou hodnotou jako měl (má) mnou
> předávaný... Viz můj předchozí nebo váš úryvek kódu.
>
> Libor
>
> 2011/4/4 Ladislav Thon <[email protected]>
>
>>   nikoliv, naopak, vše je předáváno referencí.
>>>
>>
>>  Ne, původní pisatel to má správně, vše se předává hodnotou -- primitivní
>> i referenční typy. Tohle je pekelně rozšířený omyl.
>>
>>  Předávání parametrů odkazem (referencí) by znamenalo, že můžete tu
>> původní proměnnou "vyměnit", asi takhle:
>>
>>  void caller() {
>>   String a = "a";
>>    callee(a);
>>   // !!! co je v proměnné a?
>> }
>>
>>  void callee(String param) {
>>   String b = "b";
>>   param = b;
>> }
>>
>>  Kdyby se parametr param v metodě callee předával referencí, pak by na
>> konci metody caller platilo "b".equals(a). Pokud se dobře pamatuju, v C# by
>> to takhle fungovalo, kdyby ten parametr byl deklarovaný "ref String param".
>>
>>  Jenže referenční typy se v Javě předávají hodnotou -- dostanete kopii
>> reference, takže můžete změnit _stav_ objektu (v ukázce ne, String je
>> neměnitelný), ale nemůžete _vyměnit_ ten objekt jako takový.
>>
>>  Pro pole platí totéž, jsou to taky referenční typy (dalo by se říct, že
>> to jsou vlastně taky objekty, a nebyla by to úplná lež).
>>
>>  LT
>>
>
>
>

Odpovedet emailem