Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Parameter als Referenz

Empfohlene Antworten

Veröffentlicht

Hi,

gibt es die Möglichkeit Funktionsparameter als Referenz auf ein anderes Objekt zu übergeben?

Im Internet bin ich leider nicht fündig geworden, was meine Befürchtung aufkommen lässt, dass dies gar nicht möglich ist in Java....

gruß

Java selbst unterstützt keine expliziten Zeiger auf Variablen usw. so wie in C z.B.

void test(int &bla);

In Java werden Objekte allerdings _grundsätzlich_ als refernz übergeben.

In Java werden Objekte allerdings _grundsätzlich_ als refernz übergeben.

Richtig - lediglich primitive Datentypen werden einer Funktion als Kopie und nicht als Referenz übergeben, soweit ich mich erinnern kann.

Gruß

Markus

Ich bin mir ebenfalls ziemlich sicher das ihr beide Recht habt.

gibt es die Möglichkeit Funktionsparameter als Referenz auf ein anderes Objekt zu übergeben?
Objekte (nicht primitive Datentypen) werden immer als Referenzen übergeben. Wobei man das nicht mit der Referenzübergabe unter C verwechseln darf.

Siehe auch: JLS 4.3: Reference Types and Values

was meine Befürchtung aufkommen lässt, dass dies gar nicht möglich ist in Java
Was genau hast du denn vor?

Moin moin,

Ich habe eine main Prozedur in der ein Objekt erzeugt wird.

z.Bsp ein Array von Zahlen.

nun habe ich ein Objekt einer Klasse, hier eine Datenbankklasse.

Diese Klasse hat eine Methode, welche Abfrage aufruft.

Gibt es jetzt die Möglichkeit mit meinem Array in der Funktion zu arbeiten?

Beispielsweise würde der Funktionsaufruf lauten:

db.abfrage(array); <--- Aufruf mit Referenz auf den Array in main() ?!

Mittlerweile habe ich das zwar über Rückgabewerte gelöst, wollte aber nun noch einmal wissen, was möglich ist.

java.lang.Object

-> java.lang.reflect.Array

public final class Array extends Object

Array == Object

also werden Arrays als Referenz übergeben

notfalls könnte man auch einfach eine Collection (ArrayList) übergeben - das geht auf jeden Fall

Oh alles klar, eine Kopie müsste ich dann also innerhalb der Methode erstellen?

Oder kann ich auch explizit eine Kopie übergeben?

Fragen über Fragen ;)

Danke für die bisherigen Antworten schon mal

Eine Kopie kannst du nicht explizit übergeben.

Zum Kopieren von Objekten solltest du dir aber mal die Methode Object.clone() und das interface java.lang.Cloneable anschauen.

Strings werden nicht als Referenz übergeben.

Denn:

Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared.
Strings werden nicht als Referenz übergeben.
Natürlich werden Sie das. Die Referenzen zeigen dabei letzten Endes nur auf die gleichen Objekte im String-Pool und der Inhalt eines Strings kann dabei nicht mehr verändert werden. Oder anders gefragt: Wie werden sie dann übergeben, und was unterscheidet sie zur Laufzeit damit von anderen Objekten?

[Haarspalterei] Eigentlich wird jeder an eine Funktion übergebene Parameter als Kopie ("by value") übergeben. [/Haarspalterei]

(Dies bedeutet natürlich nicht, das Kopien von Objekten angefertigt werden.)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.