Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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ß

Geschrieben

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

Geschrieben
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?
Geschrieben

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.

Geschrieben
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

Geschrieben

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

Geschrieben

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.
Geschrieben
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?
Geschrieben

[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.)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...