dedlfix: Java Pass by Reference

Beitrag lesen

Tach!

ich programmiere gerade etwas in Java und kriege eine NullPointerException.

Das Mindeste wäre die Angabe, an welcher Stelle die Exception geworfen wird. Weiterhin gibt es für Java eine Menge Entwicklungsumgebungen, die einen Debugger eingebaut haben. Mit dem kann man sehr schön nachvollzieehn, was da wie passiert. Inklusive dem Anzeigen der Variableninhalte. Auch den Aufruf-Stack kann man sehen, was nicht nur bei rekursiven Aufrufen hilfreich ist.

Laut http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value ist Java pass by value, dementsprechend wird die Referenz übegeben und somit müssten alle 3 Funktionen jeweils auf dem selben Objekt arbeiten.

Dieser Satz widerspricht sich, so wie er dasteht. Objekte werden als Referenz übergeben. Die Referenz auf das Objekt aber als Value. Das heißt dass das Objekt selbst nicht kopiert sondern durchgereicht wird, aber der Verweis darauf wird kopiert. Praktisch ist das in der Regel nicht weiter wichtig. Man kann auf die Objekteigenschaften zugreifen. Das ist das, was man üblicherweise will. Aber das Objekt komplett ersetzen geht nicht, wenn man nur eine Kopie der Referenz hat. Man bearbeitet dann nur seine Kopie der Referenz und nicht andere, anderswo existierende Kopien.

Obwohl ich Funktion 1 aufrufe und diese die Arbeit an Funktion 3 weitergibt und in Funktion 3 der State von dem Node geändert wird, hat Node wieder einen anderen State (nämlich null) in Funktion 1, wenn Funktion 3 fertig ausgeführt ist.

Dein Code ist nicht nachvollziehbar, weil man deinen Datenbestand nicht hat, mit dem du das Problem hast. Und deine Beschreibung deutet nur vage auf die Problemstelle hin. Das erzeugt bei den Hilfswilligen einen hohen Aufwand. Deswegen kann ich dir nicht mehr als die allgemeine Emfehlung des Debuggers geben.

dedlfix.