bolleee Geschrieben 27. Juni 2006 Geschrieben 27. Juni 2006 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ß Zitieren
etherius Geschrieben 27. Juni 2006 Geschrieben 27. Juni 2006 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. Zitieren
Krain Geschrieben 27. Juni 2006 Geschrieben 27. Juni 2006 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 Zitieren
Whatever Geschrieben 27. Juni 2006 Geschrieben 27. Juni 2006 Ich bin mir ebenfalls ziemlich sicher das ihr beide Recht habt. Zitieren
perdian Geschrieben 27. Juni 2006 Geschrieben 27. Juni 2006 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 JavaWas genau hast du denn vor? Zitieren
TDM Geschrieben 28. Juni 2006 Geschrieben 28. Juni 2006 Objekte (nicht primitive Datentypen) werden immer als Referenzen übergeben. Ausnahme: String Zitieren
bolleee Geschrieben 28. Juni 2006 Autor Geschrieben 28. Juni 2006 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. Zitieren
TDM Geschrieben 28. Juni 2006 Geschrieben 28. Juni 2006 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 Zitieren
bolleee Geschrieben 28. Juni 2006 Autor Geschrieben 28. Juni 2006 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 Zitieren
etherius Geschrieben 28. Juni 2006 Geschrieben 28. Juni 2006 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. Zitieren
perdian Geschrieben 28. Juni 2006 Geschrieben 28. Juni 2006 Ausnahme: StringIn wie fern stellt ein String hier eine Ausnahme da? Ein String ist genauso ein Objekt wie jedes andere auch. Zitieren
TDM Geschrieben 28. Juni 2006 Geschrieben 28. Juni 2006 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. Zitieren
perdian Geschrieben 28. Juni 2006 Geschrieben 28. Juni 2006 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? Zitieren
Bubble Geschrieben 28. Juni 2006 Geschrieben 28. Juni 2006 [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.) Zitieren
Empfohlene Beiträge
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.