Verweis oder neues Objekt?

Fohnbit

Top Contributor
Hallo,

auch wenn es ein Anfänger Thema ist.
Ich habe:
Java:
private LimitedQueue<String> failedUploads = new LimitedQueue<String>(10000);
...
bla bla
...
LimitedQueue<String> test = new LimitedQueue<String>(10000);
test.addAll(failedUploads);
HttpPost httpost = new HttpPost(getPropertyUrl()
                    + "/input/bulk.json", test, this, getPropertyApikey());
failedUploads.clear();

Ist die Übergabe an die Klasse HttpPost auf die Variable "failedUploads" nun ein Verweis oder ein neues Objekt?

Wenn ich nämlich "failedUploads" nicht zuerst in die neue "test" lege, arbeitet die HttpPost Klasse mit einer leeren Liste.

Demnach wird beim Aufruf also ein Verweis/Zeiger gesetzt, oder?
 

InfectedBytes

Top Contributor
Nein, das meint er nicht.
Mit new werden immer neue Objekte erzeugt, welche im sogenannten Heap gespeichert werden.
Java:
Object obj = new Object();
Hier wird nun ein neues Objekt erzeugt und die Variable obj ist eine Referenz welche auf das neu erzeugte Objekt zeigt.
Wenn du diese nun an eine Methode übergibst, so wird zwar die Referenz kopiert, sie zeigt aber immer noch auf das gleiche Objekt.
Java:
void test(Object x) { ... }
// ...
test(obj);
Die Variablen x und obj zeigen also beide auf das gleiche Objekt
 

dayaftereh

Top Contributor
Na ja, du erzeugst erst failedUploads, was eine List bzw Queue ist. Dann erzeugst du Test was eine weitere Queue ist und fügst alles von failedUploads ein. Dann übergibst du Test an den HttpPost. Dabei wird eine Referenz übergeben. Jetzt leerst du die failedUploads was aber nicht die Test leert, da Test eine neue Liste ist mit den selben Objekten. Würde Test nicht als Referenz übergeben werden, dann könntest du sie auch leeren, da eine Kopie gemacht wird.
 

VfL_Freak

Top Contributor

Fohnbit

Top Contributor
Hallo,

oh, das habe ich dann Missverstanden. So wie du es beschrieben hast, hatte ich es eh gemeint.
Also nur primitive Datentypen werden kopiert: OK

Aber wie ist es in meinem konkreten Fall:
Ich starte einen neuen Thread und übergebe im Konstruktor eine Liste.
Java:
HttpPost httpost = new HttpPost(getPropertyUrl()
                    + "/input/bulk.json", test, this, getPropertyApikey());

Demnach wäre "test" nur ein Pointer und wenn ich im Thread die übergebene Variable bearbeite, bearbeite ich eigentlich die in der Main Klasse.
Somit habe ich ein concurrent Problem, oder?
Da sowohl die Klasse sowie der neue Thread auf das selbe Objekt zugreifen?

Das würde eine Exception nun erklären, die ich mal hatte.

Danke für Eure Hilfe!
 

dayaftereh

Top Contributor
Jip, du hast kein Concurrency Problem. An der Stelle hat Java selbst ein paar Thread safe Collections die vielleicht helfen.

Normal bekommt man einen ConcurrentModificationException.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Neues Objekt oder nur ein Verweis? Java Basics - Anfänger-Themen 5
S verweis auf andere Klasse fehler Java Basics - Anfänger-Themen 3
D JavaFX, Verweis auf Datei im Projekt Java Basics - Anfänger-Themen 0
N Vererbung Submatrix mit Verweis auf Matrix erstellen Java Basics - Anfänger-Themen 9
I Verweis auf ein Objekt Java Basics - Anfänger-Themen 13
T Verweis java.exe Java Basics - Anfänger-Themen 14
X Klassen verweis Java Basics - Anfänger-Themen 8
F Verweis auf Objekt Java Basics - Anfänger-Themen 7
N Jar-Datei mit Verweis auf andere Jar-Datei ausführen Java Basics - Anfänger-Themen 2
J Programm beenden und Verweis an andere Stelle im Programm Java Basics - Anfänger-Themen 10
J neues Object (JLabel) vorab zum Layout hinzufügen , Location setzen, etc? Java Basics - Anfänger-Themen 2
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
J Array vertauschen ohne ein neues anzulegen?! Java Basics - Anfänger-Themen 10
W Neues Lern-Projekt gesucht Java Basics - Anfänger-Themen 8
B Erste Schritte nio oder io für neues Projekt Java Basics - Anfänger-Themen 1
AnnaBauer21 org.w3c.dom.Element - Neues Element hinzufügen Java Basics - Anfänger-Themen 4
C Neues Objekt mit Beziehung zu bereits bestehendem Objekt Java Basics - Anfänger-Themen 4
T Erste Schritte Totaler Noob in Java will was neues lernen Java Basics - Anfänger-Themen 22
E Knopfdruck neues Fenster öffnen Java Basics - Anfänger-Themen 5
J Variablen Strings mit Zeilenumbrüchen in neues Array Element Java Basics - Anfänger-Themen 1
K Erste Schritte Neues Fenster mit Textinhalt öffnen Java Basics - Anfänger-Themen 6
M Code um per jButton ein neues Fenster zu öffnen Java Basics - Anfänger-Themen 3
L OOP Neues Objekt bei jeder Eingabe erstellen (Objekte speichern?) Java Basics - Anfänger-Themen 10
I Innerhalb einer Methode suchen und hinzufügen. Neues Objekt in Suche dann? Java Basics - Anfänger-Themen 8
A altes JPanel entfernen und neues öffnen Java Basics - Anfänger-Themen 5
J char-Array rückwärts ausgeben und in neues Char-Array speichern Java Basics - Anfänger-Themen 3
P Array reversed in ein neues Array Java Basics - Anfänger-Themen 5
P Vererbung Neues Objekt aus Vorlage erzeugen Java Basics - Anfänger-Themen 1
F Neues Panel und Button unsichtbar Java Basics - Anfänger-Themen 10
M Beim Klicken auf X neues Fenster Java Basics - Anfänger-Themen 4
S Neues Fenster auf Knopfdruck Java Basics - Anfänger-Themen 12
J Button drücken neues Fenster?! Java Basics - Anfänger-Themen 5
M Neues Objekt erzeugen mit Klassennamen oder ohne Java Basics - Anfänger-Themen 5
I Neues Klassenobjekt nicht "ansprechbar" Java Basics - Anfänger-Themen 5
C Button - neues Fenster - Bestellung anzeigen Java Basics - Anfänger-Themen 10
M Neues Objekt? Java Basics - Anfänger-Themen 6
K Neues Bild bei eingabe bestätigung erscheinen Java Basics - Anfänger-Themen 21
M Timer-Thread in Swing öffnet jedes Mal ein neues Fenster Java Basics - Anfänger-Themen 6
D Design-Tipps für neues Programm (Excel-Charts-...) Java Basics - Anfänger-Themen 3
M Neues Fenster Java Basics - Anfänger-Themen 2
S Innerhalb eines Fensters ein neues erschaffen Java Basics - Anfänger-Themen 7
D aus einem einzeiligen String ein neues Objekt erstellen Java Basics - Anfänger-Themen 5
K neues Fenster mit Button öffnen Java Basics - Anfänger-Themen 17
D Neues Frame öffnen Java Basics - Anfänger-Themen 7
M Neues Objekt erstellen Java Basics - Anfänger-Themen 3
P neues Objekt Java Basics - Anfänger-Themen 4
J Neues Forum Thema erstellen mit java(httpclient) Java Basics - Anfänger-Themen 11
D Neues Objekt in Methode erstellen möglich? Java Basics - Anfänger-Themen 5
M Neues Fenster öffnen altes schützen Java Basics - Anfänger-Themen 10
S mit clickevent neues formular öffnen Java Basics - Anfänger-Themen 2
K Neues Fenster Öffnen? Java Basics - Anfänger-Themen 18
F jTable - neues Element vorher auf existenz Prüfen Java Basics - Anfänger-Themen 7
B neues Objekt erzeugen Java Basics - Anfänger-Themen 7
E Neues Java Fenster öffnen Java Basics - Anfänger-Themen 4
D Neues ContentPane öffnen Java Basics - Anfänger-Themen 3
B neues Problem! Java Basics - Anfänger-Themen 14
G JSP ohne neues Fenster aufrufen. Java Basics - Anfänger-Themen 8
S neues Objekt benennen Java Basics - Anfänger-Themen 3
I Probleme bei "Neues Spiel" Java Basics - Anfänger-Themen 3
P Neues Fenster ueber Hauptfenster Java Basics - Anfänger-Themen 4
T Möchte ein neues Objekt erzeugen mit Wert von anderem Objekt Java Basics - Anfänger-Themen 9
L Wie kann ich auch in einem ActionListener ein neues java Pro Java Basics - Anfänger-Themen 8
gurgi mit button neues Frame öffnen Java Basics - Anfänger-Themen 7
G Neues File mit vorgegebenen Einstellungen erstellen? Java Basics - Anfänger-Themen 7
G neues Objekt der Klasse eines anderen Objekts Java Basics - Anfänger-Themen 3
T Panel entfernen, neues hinzufügen Java Basics - Anfänger-Themen 2
D neues Fenster in GUI Java Basics - Anfänger-Themen 2
S Methode soll ein neues Objekt vom Typ Class XYZ Java Basics - Anfänger-Themen 7
G neues String Array in super() übergeben Java Basics - Anfänger-Themen 3
S vom button ein neues fenster öffnen Java Basics - Anfänger-Themen 1
L neues Fenster und Hauptfenster sperren Java Basics - Anfänger-Themen 11
N Open Source für Anfänger, neues Projekt-> Interesse? Java Basics - Anfänger-Themen 36
I Neues Spiel starten Java Basics - Anfänger-Themen 9
K Neues Fenster per Buttonklick, Texteingabe speichern Java Basics - Anfänger-Themen 9
S Problem neues Objekt erzeugen Java Basics - Anfänger-Themen 4
M removeAll() und neues Hinzufügen Java Basics - Anfänger-Themen 2
A neues Objekt in main methode erstellen Java Basics - Anfänger-Themen 2
N Wie öffne ich ein neues Applet? Java Basics - Anfänger-Themen 4
G neues Paket importieren Java Basics - Anfänger-Themen 2
M [SOLVED]private Daten head - neues objekt? Java Basics - Anfänger-Themen 12
R Spieleprogrammierung Menüeintrag "Neues Spiel" Java Basics - Anfänger-Themen 2
G Neues Bild bei MouseOver Java Basics - Anfänger-Themen 2
X GUI: neues Panel in einer Applikation anzeigen lassen Java Basics - Anfänger-Themen 2
R Gui + neues Fenster Java Basics - Anfänger-Themen 8
bernd Neues JFrame erzeugen? Java Basics - Anfänger-Themen 8
S Neues Fenster/Panel nach Knopfdruck Java Basics - Anfänger-Themen 2
M Kann neues Servlet nicht hinzufügen Java Basics - Anfänger-Themen 5
S in einem PopUp ein neues Popup erzeugen? Java Basics - Anfänger-Themen 5
J neues gui hinzugefügt .... jetzt gehts nicht mehr Java Basics - Anfänger-Themen 10
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
Rxiiz Objekt aus ComboBox entfernen Java Basics - Anfänger-Themen 4
I JSON in Objekt umwandeln Java Basics - Anfänger-Themen 3
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
B Objekt aus generalisierter Liste entfernen Java Basics - Anfänger-Themen 11
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
Say Objekt Java Basics - Anfänger-Themen 4
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben