Call By Referene?

R

r1d1

Mitglied
Moin,

hab jetzt auch schonmal in Google und Büchern gekuckt, aber nichts gefunden so wie ich es haben will :(

Gibt es keine einfache Lösung, Call By Reference in Java umzusetzen?

Ich weiß, dass Java eigentlich kein Call By Reference vorsieht, aber es gibt doch sicher einen Weg, dies zu umgehen. Kann man eventuell eine eigenen Methode schreiben, die aufgerufen werden muss, um Call By Reference zu verwenden ???:L Bin leider noch ein Anfänger, deswegen sind meine Möglichkeiten bez. Kreativitit leider (hoffentlich noch) begrenzt, und bräuchte daher Hilfe.

Was ich will ist ganz einfach:

Java:
public class GamePanel {

	public static void main(String[] args) {

		int a = 5;
		int b = 8;

		CallByValue(a);
		System.out.println(a); 
		// call by value: immer noch 5;

		CallByReference(b);
		System.out.println(b); 
		// call by reference: funktioniert nicht :(

	}

	static int CallByValue(int _a) {
		return _a * 2;

	}

	static int CallByReference(int b) {
		return b * 3;
	}

}

Ich weiß, dass die Methode CallByReference so wie ich sie geschrieben hat nicht funktioniert und auch warum sie nicht funktioniert, ich habe sie nur als Gedankengang dennoch aufgeschrieben. Was ich möchte ist einfach nur eine Methode, die die Variable b (der main-methode) verändern kann.

Wäre dankbar für Hilfe, kann mir eigentlich nicht vorstellen dass das allzu schwer umzusetzen ist..
 
M

Marco13

Gesperrter Benutzer
Wrapper-Klasse ("MutableInteger", mit setValue und getValue, aufwändig), int[1] (häßlich), oder die Anforderung aufgeben (meistens am besten)
 
M

maki

Gast
In Java gibt es kein CallByReference, Punkt.

Die gute Nachricht: Java bietet Referenzen um auf Objekte zuzugreifen, diese können kopiert werden, da die Referenzen dann immer noch auf dasselbe Objekt zeigen.
Bei primitiven funktioniert das natürlich nicht.

Abgesehen davon ist es in deinen Beispielen vollkommen egal ob CallByReference oder CallByValue, da die Methodenparameter nie verändert werden.
 
R

r1d1

Mitglied
Abgesehen davon ist es in deinen Beispielen vollkommen egal ob CallByReference oder CallByValue, da die Methodenparameter nie verändert werden.

Meinst du damit dass es vollkommen egal ist welche MEINER Methoden (CallByValue(); CallByReference()) ich verwende? Das ist mir klar.

Falls du aber meinst dass es bei mir egal ist ob ich Call By Value oder Call By Reference, stimmt das doch nicht wirklich, oder?
Ich möchte ja eine Methode, die mir eine Variable außerhalb der besagten Methode verändert, meines Wissens funktioniert das nicht mit Call By Value.


Könntet ihr mir vielleicht ein Beispiel geben, wie so eine Wrapper-Klasse (oder was anderes) dann aussieht?

Was ich will, ist ja einfach nur:

Java:
int a = 5;
CallByReference(a)
System.out.println(a) // Hier soll der durch die Methode veränderte Wert rauskommen, in meinem Beispiel 15;
 
M

maki

Gast
Meinst du damit dass es vollkommen egal ist welche MEINER Methoden (CallByValue(); CallByReference()) ich verwende? Das ist mir klar.
Ich meinte was ich sagte: In deinen Beispielen ist es egal :)

Ansonsten: Parameter von Methoden ändern zu lassen kann schnell zu verwirrungen und Überraschungen führen, solte man normalerweise meiden.
Lieber Rückgabewerte verwenden, bei mehreren darüber nachdenken ob man nicht doch OO Pprogrammieren will und Klassen erstellt.
 
R

r1d1

Mitglied
Der ursprüngliche Gedanke war, ein Würfelspiel zu programmieren, bei dem 2 Spieler anfangs 0 Punkte haben.

Je nach dem welche Augenzahl sie würfeln, sollen die Punkte um die Augenzahl erhöht werden.

Wird eine 6 gewürfelt, passiert folgendes:
Würfelt Spieler1 eine 6, werden seine Punkte auf den Rückfallwert (anfangs 0) zurückgesetzt.
Zugleich kann Spieler 2 entscheiden, ob er einmal aussetzt - dafür wird sein Rückfallwert auf seinen aktuellen Punktestand geändert - oder normal weiterspielt.
Das ganze funktioniert natürlich auch umgekeht (wenn Spieler 2 eine 6 würfelt)



Dafür muss ich ja auf die Punktezahl (die außerhalb der Methode ErhöheUmAugenzahl() bzw. SonderfallZahl6() ) zugreifen können.

Oder kann ich das anders realisieren?
 
S

SlaterB

Gast
was auch immer du machen willst, übergib keine primitiven Datentypen sondern Objekte, z.b. unschön aber einfach ein int-Array der Länge 1,
es kann dann genauso die Array-Variable an sich nicht geändert, kein neues Array zugewiesen werden, aber das vorhandene GEÄNDERT werden,
array[0] war vorher 5, wird auf 10 gesetzt und das sieht der Aufrufer dann auch, es gibt ja keine unterschiedlichen Sichten auf ein Array
 
W

Woodstock

Mitglied
Hallo,

so gehts:

Java:
int a = 5;
a=CallByReference(a)
System.out.println(a) // Hier soll der durch die Methode veränderte Wert rauskommen, in meinem Beispiel 15;
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Call-by-Value, Call-by-Reference, Call-by-Name Ausgabe Java Basics - Anfänger-Themen 1
X Verständnisproblem Call-By-Reference Java Basics - Anfänger-Themen 5
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
K Eigene Annotations, Pre-/Post-/Call-Method Java Basics - Anfänger-Themen 6
G Klassen Call by Value auch bei Objekten? Java Basics - Anfänger-Themen 2
H call by reference & value Java Basics - Anfänger-Themen 14
B Call by Value/Reference Java Basics - Anfänger-Themen 4
Joew0815 Methoden Objekt als Methoden-Parameter - Kein call-by-reference? Java Basics - Anfänger-Themen 12
T Array prozedur, call by reference ? Java Basics - Anfänger-Themen 6
B Variablen Wie macht man eine call by reference mit primitiven Datentypen in Java? Java Basics - Anfänger-Themen 2
S call by reference? Java Basics - Anfänger-Themen 52
F Verständisproblem bzgl. nicht Vorhandensein von Call-by-reference Java Basics - Anfänger-Themen 2
B Call By reference (Null pointer exception) Java Basics - Anfänger-Themen 6
N Methode erfüllt nicht den zweck (Call by value) Java Basics - Anfänger-Themen 17
0 Call by value Java Basics - Anfänger-Themen 3
C Call by reference Java Basics - Anfänger-Themen 11
W call-by-reference-Effekt bei Objekten Java Basics - Anfänger-Themen 3
S "Call by Reference" Java Basics - Anfänger-Themen 12
J Call by ... Java Basics - Anfänger-Themen 16
M try-catch, call-by-reference, Streaming und Strings Java Basics - Anfänger-Themen 10
S call by reference Java Basics - Anfänger-Themen 7
F java call jython Java Basics - Anfänger-Themen 7
C Unchecked Call? Wie Warnung beseitigen? Java Basics - Anfänger-Themen 3
F Wie kann ich call by reference umgehen? Java Basics - Anfänger-Themen 14
F Rekursive Aufrufe, Parameterübergabe, call by reference Java Basics - Anfänger-Themen 3
I call to super must be first statement in constructor Java Basics - Anfänger-Themen 3
F Call-By-Reference umgehen Java Basics - Anfänger-Themen 4
B Call by Reference Java Basics - Anfänger-Themen 7
S call by reference vs. call by value - pls help Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Anzeige

Neue Themen


Oben