T
tuxedo
Gast
Hallo,
folgendes Szenario: Ich habe eine überschriebene write() Methode eines OutputStreams. In dieser Methode möchte ich die Daten vor dem weiterschreiben in einen anderen Stream erst bearbeiten (process()). Dabei sollten die eingehenden Daten in "b" von process() bearbeitet werden und wieder in "b" landen...
Bisher hab ich folgendes gemacht:
Aber würde auch folgendes gehen:
Hier würde ich mir einmal das "new" sparen. Jedoch weiß ich jetzt nicht, ob welchen Kontext "b", welcher als erster Parameter bei "mOut.write()" auftaucht, hat. Wird zuerst process() ausgeführt so dass dieser erster Parameter "b" der write() Methode schon das bearbeitete "b" ist, oder wird hier das "unbearbeitete b" verwendet ???
Ich kann grad noch nicht ausprobieren. Aber vielleicht weiß einer wie der Compiler hier arbeitet...
- Alex
folgendes Szenario: Ich habe eine überschriebene write() Methode eines OutputStreams. In dieser Methode möchte ich die Daten vor dem weiterschreiben in einen anderen Stream erst bearbeiten (process()). Dabei sollten die eingehenden Daten in "b" von process() bearbeitet werden und wieder in "b" landen...
Bisher hab ich folgendes gemacht:
Code:
@Override
public void write(byte[] b, int off, int len) throws IOException {
int processed = process(b,off,len);
mOut.write(b,off,processed);
}
Aber würde auch folgendes gehen:
Code:
@Override
public void write(byte[] b, int off, int len) throws IOException {
mOut.write(b,off,process(b,off,len));
}
Hier würde ich mir einmal das "new" sparen. Jedoch weiß ich jetzt nicht, ob welchen Kontext "b", welcher als erster Parameter bei "mOut.write()" auftaucht, hat. Wird zuerst process() ausgeführt so dass dieser erster Parameter "b" der write() Methode schon das bearbeitete "b" ist, oder wird hier das "unbearbeitete b" verwendet ???
Ich kann grad noch nicht ausprobieren. Aber vielleicht weiß einer wie der Compiler hier arbeitet...
- Alex