Best Practices CopyConstrutor mit ArrayList

Schuriko

Bekanntes Mitglied
Ja, ja, ich weis es hängt immer von der jeweiligen Situation ab. Die nachfolgende Frage ist erstmal grundsätzlich gestellt.

Beispiel (dient nur der Shematic, also es könnten Fehler enthalten sein)
Java:
class Identifier {
    private String id;
    private String a;
    private String b;
    ...
    public Identifier(Identifier identifier) {
        super();
        
        if ( identifier != null ) {
            this.id = identifier.id;
            this.a = identifier.a;
            this.b = identifier.b;
            ....
        }
    }
    ...
}

class OtherClass {
    ...
      List<Identifier> identifierList = new ArrayList<Identifiert>();
    ...
    public OtherClass(OtherClass otherClass) {
      super();
        
      if ( otherClass != null ) {
          ...
            this.identifierList = new ArrayList(otherClass.identiferList.size);
            for(Identifier identifier: otherClass.identifierList) this.identifierList.add(new Identifier(identifier))
          ...
      }
    }
}

Was ist am besten?

1. Kopieren der Daten in ein neues Datenobject
Java:
for(Identifier identifier: otherClass.identifierList) this.identifierList.add(new Identifier(identifier))
Hat den Vorteil, dass die Daten in einem neuen Speicherbereich landen. Hat aber bei Veränderung der Identifier - Klasse den Nachteil, dass die anderen Klassen
es nicht bekommen.
2. Referenz auf das gleiche Object vergeben, sprich ein kopieren der Daten erfolgt nicht in einen anderen Speicherbreich
Java:
for(Identifier identifier: otherClass.identifierList) this.identifierList.add(identifier)
Hat den Vorteil, dass die Daten bei Veränderung gleich bleiben.
 

LimDul

Top Contributor
Der erste Fall ist normalerweise der gewünschte. Wenn ich ein Objekt kopiere möchte ich in der Regel danach ein komplette Deep-Copy haben und wenn ich irgendwas in dem Objektgeflecht ändere soll es sich nicht auf das Originale Objekt auswirken.

Aber im Endeffekt kommt es auf den Einzelfall an:
https://de.wikipedia.org/wiki/Objektkopie - da sieht man das es beide Variante gibt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Error Logging - best practices? Allgemeine Java-Themen 3
M Best Practices für Undo/Redo Allgemeine Java-Themen 16
G Best Practices Software-Engineering‏ Allgemeine Java-Themen 3
G Best Practices Allgemeine Java-Themen 10
M Best Practices Exception Handling für eigene library Allgemeine Java-Themen 8
Ameise03 Best&Worst Case bei Insertionsort Allgemeine Java-Themen 10
T Best Practice überprüfen von Übergabeparametern Allgemeine Java-Themen 17
S best practice: Einordnung Enitity und Datenklasse Allgemeine Java-Themen 11
temi best practice: Parameter überprüfen, wo? Allgemeine Java-Themen 9
Airwolf89 JUnit: Vorschläge/ Best Practice Allgemeine Java-Themen 7
M Best Practice: Daten aufnehmen-speichern-bereitstellen Allgemeine Java-Themen 8
H Best Practice zu vielen konstanten Objekten? Allgemeine Java-Themen 10
F best practice Allgemeine Java-Themen 5
J Input/Output Dateien bearbeiten - "Best Practice" Allgemeine Java-Themen 3
R Statische Klasse: Best practice mit flags (2) Allgemeine Java-Themen 3
musiKk Best Practice für kleine Variationen in gegebenen Modellklassen Allgemeine Java-Themen 11
S best practise Allgemeine Java-Themen 6
J Best Practice für implementierung von equals(...) Allgemeine Java-Themen 7
Daniel_L Best Practice zum Löschen von Log-Files? Allgemeine Java-Themen 8
S Array: Anzahl Elemente mit best. Wert zählen Allgemeine Java-Themen 4
M Best Match / Best Fit auf Strings Allgemeine Java-Themen 9
G Exception handling - b.practices/tipps. etc. Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben