Call by reference -- spinn ich?

baui7000

Grünschnabel
Hallo!
Ich schau mir grad etwas über Java3D an und da bin ich auf folgendes gestoßen. Bei der Klasse BoundingBox gibt es eine Methode getLower(Point3d p1), welche aber einen Rückgabetyp VOID besitzen. Dh jetzt, es müsste call by reference funktionieren damit das klappt? Oder spinn ich jetzt auf einmal total? :)

Hier könnt ihr euch die Doc anschaun:
http://download.java.net/media/java...undingBox.html#getLower(javax.vecmath.Point3d)

Ich hoffe ihr könnt mir da schnell weiterhelfen und etwas Licht ins Dunkel bringen.

lg Christoph
 
Ja, und zwar bedeutet das, das nur eine Kopie eines Parameters übergeben wird. Im Falle eines nicht-primitiven Datentyps wird eine Kopie der _Referenz_ übergeben.
Wenn innerhalb der Funktion der Referenz ein neues Objekt übergeben wird, z.B. "o = new Object()", dann verändert sich die Referenz in der aufrufenden Funktion nicht.
Da die Kopie der Referenz aber immer noch auf das selbe Objekt zeigen, kann man in einer Funktion auf Objekt-Member zugreifen und die verändern.
Ich hoffe ich konnte dir das verständlich erklären, der wichtige Punkt ist, das die Objekt-Referenz kopiert wird und nicht das ganze Objekt. Zum Weiterlesen

Gruß
Matt

P.S.: Glückwunsch ComFreek :)
 
Super! Danke für deine Antwort! Mir war es durchaus bewusst, dass Java beim Methodenaufruf eine lokale Kopie des Parameters am Stack erstellt...aber diese Kopie ist ja immer noch eine Referenz auf das GLEICHE ursprüngliche Objekt. Jetzt ist mir alles klar und in sich schlüssig...hatte wohl einen kleinen Denkanstoß nötig. :)

lg Christoph
 
Wenn es dich Interessiert:
Arrays.fill() und System.arraycopy() funktionieren genauso. Zugegeben, als ich das zum ersten Mal gesehen habe, war ich auch ordentlich verwirrt…

@ComFreek: Glückwunsch ;)
 
Zurück