Kein 'call by reference'?

Hallo,

ist es korrekt, dass es in JAVA kein „call by reference“ gibt? Möchte die Eingabeparamter meiner Funktion überschreiben, dazu müsste ich sie ja als Variablenreferenz übergeben. Jetzt hab ich im Web gelesen, dass sowas anscheinend gar net möglich is in JAVA???

Angenommen ich möchte zwar Variablen vertauschen und hab dazu die Funktion „swap(i1,i2)“. Wie kann ich nun innerhalb der Funktion den Inhalt von i1 und i2 vertauschen und gleichzeitig global überschreiben???

mfg - jens

Angenommen ich möchte zwar Variablen vertauschen und hab dazu
die Funktion „swap(i1,i2)“. Wie kann ich nun innerhalb der
Funktion den Inhalt von i1 und i2 vertauschen und gleichzeitig
global überschreiben???

mfg - jens

es gibt umwege das zu erreichen
CbRef gibt es in Java nur für Objekte, grunddatentypen werden CbVal übergeben

wenn du also die Grunddatentypen in Objekte umwandelst(stichwort wrapper-klassen)

kannst du die swap funktion schreiben als

void swap(Comparable c1,Comparable c2){
Comparable c3=c1;
c1=c2;
c2=c3;
}

Comparable ist eine „überklasse“ für zB Integer,Character,String
aufruf mit Objekten ist aber notwendig…

Auch hallo.

Hallo,

ist es korrekt, dass es in JAVA kein „call by reference“ gibt?

Jedenfalls nicht in der Form wie von C++

Möchte die Eingabeparamter meiner Funktion überschreiben, dazu
müsste ich sie ja als Variablenreferenz übergeben. Jetzt hab
ich im Web gelesen, dass sowas anscheinend gar net möglich is
in JAVA???

Hier eine Quelle: http://www.galileocomputing.de/openbook/javainsel4/
Java 1.5, sollte aber auch f. 1.4 gelten

Angenommen ich möchte zwar Variablen vertauschen und hab dazu
die Funktion „swap(i1,i2)“. Wie kann ich nun innerhalb der
Funktion den Inhalt von i1 und i2 vertauschen und gleichzeitig
global überschreiben???

Nichts entdeckt: http://www.programmersheaven.com/zone13/mh32.htm
Eine ‚quick’n’dirty‘ Lösung wäre, die Zielvariablen global zu definieren, also nicht als Teil einer Methode.
(Mega)Pseudocde:
public class jens;
{
int ziel_1, ziel_2;

swap(int i,int j);
{
//Implementierung
i=ziel_1;
j=ziel_2;
}
//weiteres Programm

HTH
mfg M.L.