Zadna magie. Hodnota reference b neni zmenena, je jen prepsan obsah pole. To si clovek musi pripravit predem a predat ho metode. S pozdravem Ondřej Nekola
2011/4/4 Libor Jelinek <ljeli...@virtage.com>: > Dobrý den, > dnes další "jobovka" :-) Jak je možné, že read() z potomků InputStream > používá něco co by se v jiných jazycích nazvalo výstupní parametry nebo > předávání parametrů referencí (ByRef např. ve VB). Java přeci nic takového > nemá. Vše je předáváno metodám "ByVal", tedy hodnotou. > > Tak jak to může např. > FileInputStream.read(byte[] b) > mít v JavaDocu napsáno > @param b the buffer into which the data is read. > > Obecně jako nováček bych čekal, že read bude vrácet byte[], nikoli, že mi > načtené pole bajtů bude změneno v proměnné předané hodnotou (což není možné > přece...). > > Když se podívám na zdrojáky, tak se nedostanu dále, než že to využívá JNI v > signaturách metod, např.: > private native int readBytes(byte b[], int off, int len) throws > IOException; > > Přiznávám, že JNI neznám a nikdy jsem nepoužíval. To je díky tomu? Nebo co > je to za "magii"? :-) > > Díky > Libor >