Zdravím,
nikoliv, naopak, vše je předáváno referencí.

Roman


 
From: Libor Jelinek 
Sent: Monday, April 04, 2011 12:55 PM
To: Java 
Subject: read() z IO - předávání referencí? To snad ne..


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

Odpovedet emailem