Hallo,
ich habe das Problem, dass in einer Methode ungewollt ein Wert verändert wird, was eigentlich nicht sein dürfte. Hier einmal der betroffene Codeausschnitt:
Wie kann das sein, wo kann ich den Fehler suchen? Die Methode negate() gibt ein neues Objekt zurück, es werden keine Änderungen an f vorgenommen, aber die Änderung ist ja sowieso erst nach der contract Methode da. Das neues Objekt, das in der negate-Methode erzeugt wird, übernimmt auch die Koordinaten vom ursprünglichen Objekt. Es wird ein weiteres Attribut vom Typ boolean verändert.
In Java werden Parameter doch immer mit Call by Value übergeben.
Wie kann ich rausfinden, wann sich der Wert ändert? Ich habe was zu Trackpoints gefunden, aber wo muss ich den setzen. Kenne mich im Debugger nicht so aus.
(Ich nutze Eclipse)
Danke schonmal für jede Hilfe.
LG Julian
ich habe das Problem, dass in einer Methode ungewollt ein Wert verändert wird, was eigentlich nicht sein dürfte. Hier einmal der betroffene Codeausschnitt:
Java:
public void revise(Formula f) {
//f hat ein array 'position' mit zwei Elementen (x und y Koordinate)
Formula fnegated = (Formula)f.negate();
//die Koordinaten sind unverändert
contract(fnegated);
//nach Aufruf dieser Methode ist das Vorzeichen der y-Koordinate verändert.
expand(f);
System.out.println("bla");
}
Wie kann das sein, wo kann ich den Fehler suchen? Die Methode negate() gibt ein neues Objekt zurück, es werden keine Änderungen an f vorgenommen, aber die Änderung ist ja sowieso erst nach der contract Methode da. Das neues Objekt, das in der negate-Methode erzeugt wird, übernimmt auch die Koordinaten vom ursprünglichen Objekt. Es wird ein weiteres Attribut vom Typ boolean verändert.
In Java werden Parameter doch immer mit Call by Value übergeben.
Wie kann ich rausfinden, wann sich der Wert ändert? Ich habe was zu Trackpoints gefunden, aber wo muss ich den setzen. Kenne mich im Debugger nicht so aus.
(Ich nutze Eclipse)
Danke schonmal für jede Hilfe.
LG Julian
Zuletzt bearbeitet: