Neues Objekt oder nur ein Verweis?

Fohnbit

Top Contributor
Guten Morgen,

ich möchte einem Thread ein Arraylist übergeben, damit dieses abgearbeitet wird.
Ich dachte die Arraylist wird als neues Objekt übergeben und ich kann in der Main die Arraylist wieder löschen?

Java:
public void onSenden() {
        if (channelValueList.isEmpty()) {
            return;
        }
        Runnable r = new SendHTTP(channelValueList, getPropertyUrl(),
                getPropertyNodeid(), getPropertyApikey());
        new Thread(r).start();
     channelValueList.clear();
    }

Java:
public SendHTTP(ArrayList<ChannelValue> channelValueList, String baseUrl,
            int nodeId, String apiKey) {
        // store parameter for later user
        this.channelValueList = new ArrayList<ChannelValue>();
        this.channelValueList = channelValueList;
        System.out.println("Buffer Size im Konstruktor: " + this.channelValueList.size());
        this.baseUrl = baseUrl;
        this.nodeId = nodeId;
        this.apiKey = apiKey;
    }

Es scheint so als würde nur eine Referenz gesetzt, da in der Methode "SendHTTP" dann die channelValueList wohl wieder leer ist.

Danke!
 

Fohnbit

Top Contributor
Ok, das ist wohl korrekt?:
Java:
    public SendHTTP(ArrayList<ChannelValue> channelValueList, String baseUrl,
            int nodeId, String apiKey) {
        // store parameter for later user
        this.channelValueList = new ArrayList<ChannelValue>(channelValueList);
        //this.channelValueList = channelValueList;
        System.out.println("Buffer Size im Konstruktor: "
                + this.channelValueList.size());
        this.baseUrl = baseUrl;
        this.nodeId = nodeId;
        this.apiKey = apiKey;
    }
 

Flown

Administrator
Mitarbeiter
Dein erster Versuch hat nur die Referenz auf die Liste mitegegeben, dass heißt Änderungen im Caller sind auch im Callee sichtbar.
In deinem zweiten Versuch hast du eine neue Liste angelegt mit den selben Objekten darin. Das heißt beide Listen sind unabhängig voneinander.

Footer: Doch wenn du Objekte innerhalb der Listen änderst, dann sind sie in beiden Listen sichtbar.
 

CursedCookie

Mitglied
Wenn du die Objekte tatsächlich komplett unabhängig haben willst könntest du mal darüber nachdenken das Objekt mit einem Objekt Output stream auf Platte zu schreiben und wieder einzulesen... Kostet was (an zeit) aber dann sollten Sie unabhängig voneinander sein
 

InfectedBytes

Top Contributor
@CursedCookie Die Sachen auf Platte zu schreiben ist schon ziemlich teuer, da würde ich lieber ne DeepCopy im RAM machen. Oder eben alles in einen MemoryStream schreiben.

@Fohnbit Wenn du in der Main die Liste eh löschen willst, würde ich mir den Aufwand sparen die Liste zu kopieren und einfach in der main eine neue Liste erstellen:
Java:
public void onSenden() {
        if (channelValueList.isEmpty()) {
                return;
        }
        Runnable r = new SendHTTP(channelValueList, getPropertyUrl(),
                        getPropertyNodeid(), getPropertyApikey());
        new Thread(r).start();
channelValueList = new ArrayList<>();
}
 

CursedCookie

Mitglied
@InfectedBytes hab ja gesagt dass das nicht gerade billig ist und ob es ihm das wert ist. Wenn er zu unmotiviert ist für eine kleine privat Anwendung eine deep copy zu implementieren, dann halte ich das für eine akzeptable Lösung. Wenn es nun um Geschwindigkeit geht ist er damit schlecht dran (je nachdem wie oft er es aufruft).

Man sollte sich halt fragen ob es zuviel programmier Aufwand ist für eine Übung in der es um etwas anderes geht, ob man viel Mühe in eine aufwendigere Implementierung stecken möchte, öde rob der Chef dir den Kopf abreißt wenn du das so machst ^^
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Verweis oder neues Objekt? Java Basics - Anfänger-Themen 8
C Neues Objekt mit Beziehung zu bereits bestehendem Objekt Java Basics - Anfänger-Themen 4
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
P Vererbung Neues Objekt aus Vorlage erzeugen Java Basics - Anfänger-Themen 1
M Neues Objekt erzeugen mit Klassennamen oder ohne Java Basics - Anfänger-Themen 5
M Neues Objekt? Java Basics - Anfänger-Themen 6
D aus einem einzeiligen String ein neues Objekt erstellen Java Basics - Anfänger-Themen 5
M Neues Objekt erstellen Java Basics - Anfänger-Themen 3
P neues Objekt Java Basics - Anfänger-Themen 4
D Neues Objekt in Methode erstellen möglich? Java Basics - Anfänger-Themen 5
B neues Objekt erzeugen Java Basics - Anfänger-Themen 7
S neues Objekt benennen Java Basics - Anfänger-Themen 3
T Möchte ein neues Objekt erzeugen mit Wert von anderem Objekt Java Basics - Anfänger-Themen 9
G neues Objekt der Klasse eines anderen Objekts Java Basics - Anfänger-Themen 3
S Methode soll ein neues Objekt vom Typ Class XYZ Java Basics - Anfänger-Themen 7
S Problem neues Objekt erzeugen Java Basics - Anfänger-Themen 4
A neues Objekt in main methode erstellen Java Basics - Anfänger-Themen 2
M [SOLVED]private Daten head - neues objekt? Java Basics - Anfänger-Themen 12
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
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
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
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
I Neues Klassenobjekt nicht "ansprechbar" Java Basics - Anfänger-Themen 5
C Button - neues Fenster - Bestellung anzeigen Java Basics - Anfänger-Themen 10
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
K neues Fenster mit Button öffnen Java Basics - Anfänger-Themen 17
D Neues Frame öffnen Java Basics - Anfänger-Themen 7
J Neues Forum Thema erstellen mit java(httpclient) Java Basics - Anfänger-Themen 11
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
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
I Probleme bei "Neues Spiel" Java Basics - Anfänger-Themen 3
P Neues Fenster ueber Hauptfenster Java Basics - Anfänger-Themen 4
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
T Panel entfernen, neues hinzufügen Java Basics - Anfänger-Themen 2
D neues Fenster in GUI Java Basics - Anfänger-Themen 2
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
M removeAll() und neues Hinzufügen 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
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
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
H Ein übergegebenes Objekt auf null setzen Java Basics - Anfänger-Themen 9
M BlueJ Objekt in Objektliste Java Basics - Anfänger-Themen 2
B Objekt in Klassendiagramm an fremdes Objekt weiterreichen? Java Basics - Anfänger-Themen 6
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
amelie123456 Objekt Farbe Quellcode Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben