You can't. You have to create a copy of the sub-array.
Easiest way to do that, is to use one of the Arrays.copyOfRange(xxx[] original, int from, int to) methods, where xxx is a primitive type or any object type.
If needed, you can copy updated values back to the original array using System.arraycopy().
In your case, the parameter is actually output-only, so you just create a new array, call the method with it, then copy the values to the original array, e.g.
int read( byte result[], int offset, int size ) {
if (offset == 0)
return read(result, size);
byte[] buf = new byte[size];
int bytesRead = read(buf, size);
System.arraycopy(buf, 0, result, offset, bytesRead);
return bytesRead;
}