Heim >Backend-Entwicklung >C++ >Übergibt Java Parameter als Referenz oder als Wert und wie kann man ein referenzähnliches Verhalten erreichen?
Übergabe von Parametern per Referenz in Java: Eine Klarstellung
Entgegen der landläufigen Meinung unterstützt Java die Parameterübergabe per Referenz nicht auf die gleiche Weise als C#-Schlüsselwort ref. Diese Wahrnehmung beruht jedoch auf der Tatsache, dass bei Referenztypparametern die Referenz selbst als Wert übergeben wird.
In Java werden alle Parameter als Wert übergeben. Wenn ein Referenztypparameter an eine Methode übergeben wird, wird eine Kopie der Referenz erstellt. Dies bedeutet, dass Änderungen, die an der Referenz innerhalb der Methode vorgenommen werden, keine Auswirkungen auf die Referenz außerhalb der Methode haben.
Um dies zu veranschaulichen, betrachten Sie das folgende Beispiel:
Object o = "Hello"; mutate(o); System.out.println(o); //Hello private void mutate(Object o) { o = "Goodbye"; }
Der obige Code gibt Folgendes aus: Hallo“ zur Konsole. Dies zeigt, dass die Referenz o innerhalb der Methode mutate nicht mit der Referenz außerhalb der Methode identisch ist.
Wenn Sie die Referenz selbst ändern möchten, müssen Sie dies tun Verwenden Sie einen expliziten Referenztypparameter, z. B. java.util.concurrent.atomic.AtomicReference
AtomicReference<Object> ref = new AtomicReference<Object>("Hello"); mutate(ref); System.out.println(ref.get()); //Goodbye! private void mutate(AtomicReference<Object> ref) { ref.set("Goodbye"); }
In diesem Fall wird der Parameter ref als Referenz übergeben und der Wert der Referenz wird innerhalb der Methode mutate geändert. Als Ergebnis gibt der Code „Auf Wiedersehen!“ aus. zur Konsole.
Das obige ist der detaillierte Inhalt vonÜbergibt Java Parameter als Referenz oder als Wert und wie kann man ein referenzähnliches Verhalten erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!