Best Practice Klasse mit Array clonen

Holger_Hessling

Aktives Mitglied
Hallo Forum,

folgende Klasse bietet an, Instanzen von ihr zu clonen:
Code:
public class ProfilPlan extends DOElement implements Cloneable {

   private ObservableList<PlanZeile> profilPlan = FXCollections.observableArrayList();

   public ProfilPlan(String label) {
     super(label);
   }

   @Override
   public ProfilPlan clone() {
     ProfilPlan klon = (ProfilPlan) super.clone();

     klon.profilPlan = FXCollections.observableArrayList(profilPlan);
     for (PlanZeile planZeile : klon.profilPlan) {
       klon.profilPlan.set(klon.profilPlan.indexOf(planZeile),planZeile.clone());
     }
     klon.setLabel(klon.toString() + " - ProfilPlan clone");
     return klon;
   }
}
Um das Array zu klonen, bekommt der Klon in einem ersten Schritt ein neues Array, das dem Originalen entspricht. Um eine 'tiefe Kopie' zu erhalten, laufe ich durch dieses Array und klone jedes einzelne Element.
Das funktioniert, aber es sieht holprig aus. Geht das auch eleganter?

VG Holger
 

thet1983

Top Contributor
Meine Meinung ist, ein Code ist da um zu funktionieren und nicht um einen Schönheitswettbewerb zu gewinnen....solange er das tut für was er geschrieben wurde, brauchst du ja nichts ändern, oder?
 

VfL_Freak

Top Contributor
Moin,
Meine Meinung ist, ein Code ist da um zu funktionieren und nicht um einen Schönheitswettbewerb zu gewinnen....solange er das tut für was er geschrieben wurde, brauchst du ja nichts ändern, oder?
na ja, ganz so würde ich es nicht sehen!

Es sollten schon gewisse Style-Guides eingehalten werden.

So dann ist IMHO nur lesbarer Code guter Code - vorallem wenn man im Team an größeren Projekten arbeitet! Es bringt nix, wenn es 'irgendwie' zu funktionieren scheint, aber kein andere versteht, was da eigentlich passiert ....

Gruß Klaus
 

Meeresgott

Bekanntes Mitglied
@Holger_Hessling
Der Code ist gut so wie er ist. Mann sieht schön das du das Objekt clonst und dann jedes andere Objekt in der Liste.
Mir würde auch kein anderer Weg einfallen das zu realisieren außer mit Streams aber da würdest du ja das selbe machen :)

Oder deine Clone Array Methode auslagern aber so wie es jetzt ist finde ich es am Leserlichsten

Viele Grüße
 
Zuletzt bearbeitet:

Flown

Administrator
Mitarbeiter
Ich finde es nicht so clean wenn man indexOf etc einsetzen muss. Ich würde das eher so machen:
Java:
ObservableList<PlanZeile> list = FXCollections.observableArrayList();
for(PlanZeile planZeile : profilPlan) {
  list.add(planZeile.clone());
}
klon.profilPlan = list;
Oder eben mit dem ListIterator:
Java:
klon.profilPlan = FXCollections.observableArrayList(profilPlan);
for(ListIterator<PlanZeile> lit = klon.profilPlan.listIterator(); lit.hasNext()) {
  lit.set(list.next().clone());
}
PS: Beide Codes sind ungetestet, hab gerade keine IDE.
 

thet1983

Top Contributor
@VfL_Freak , sicher muss die formatierung passen, aber so einen code könnte ein blinder mit seinem hühnerauge lesen, oder?

ich würde nichts daran ändern, doc hinzu und fertig..
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Array vom Typ Klasse Java Basics - Anfänger-Themen 18
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
I Array Länge in Klasse festlegen Java Basics - Anfänger-Themen 1
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
J Fehler bei array aus anderer Klasse Java Basics - Anfänger-Themen 3
V Array aus Klasse um vererbte Elemente erweitern Java Basics - Anfänger-Themen 3
Z Matrix Klasse mit Mehrdimensionalen Array (Addition, Multiplikation, to String) Java Basics - Anfänger-Themen 57
T KLasse das bessere Array Java Basics - Anfänger-Themen 16
S Java Array Länge aus anderer Klasse lesen Java Basics - Anfänger-Themen 1
K Klasse mit einer Array-Eigenschaft Java Basics - Anfänger-Themen 4
F Auf Array einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 4
K Klassen Array einer anderen Klasse ... Java Basics - Anfänger-Themen 21
J Array Objekte einer Klasse zuordnen Java Basics - Anfänger-Themen 15
S Auf Array einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 13
W Erste Schritte füllen Attribute java Klasse in for Schleife und Array Java Basics - Anfänger-Themen 16
S Daten aus Array in Klasse übertragen Java Basics - Anfänger-Themen 12
C Anfänger: Array + Klasse Java Basics - Anfänger-Themen 5
T Array in andere Klasse verwenden Java Basics - Anfänger-Themen 3
U Methoden Zugriff auf Array von weiterer Methode einer Klasse, Rückgabewert Problem Java Basics - Anfänger-Themen 5
E Array von Objekten einer selbst definierten Klasse mit eindeutigem Namen Java Basics - Anfänger-Themen 2
G Klassen Array durch eine Klasse aufrufen Java Basics - Anfänger-Themen 4
B Fehlermeldung bei Klasse mit array Java Basics - Anfänger-Themen 3
S Klassen Array: Übergabe von Klasse zur Main Java Basics - Anfänger-Themen 8
A Array aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 9
F Adressverwaltungsprogramm: Objekte einer Klasse in Array Java Basics - Anfänger-Themen 6
J Variablen Array aus anderer Klasse auslesen-Wie verhindert man eine NullPointerException? Java Basics - Anfänger-Themen 4
A Auf Array in gesamter Klasse zugreifen Java Basics - Anfänger-Themen 6
H Methoden Array aus Punkten erzeugen, mittels Punkt-Klasse Java Basics - Anfänger-Themen 5
B Array aus Klasse zurück geben Java Basics - Anfänger-Themen 2
D Klassen Problem mit Eigener Array-Klasse Java Basics - Anfänger-Themen 10
F Array als Instanz einer Klasse Java Basics - Anfänger-Themen 8
C Referenzen zu Instanzen einer Klasse im Array Java Basics - Anfänger-Themen 8
K Klasse als Array Java Basics - Anfänger-Themen 3
C Klassen Array-Klasse gesucht Java Basics - Anfänger-Themen 4
L Methoden Auf statische Methode einer anderen Klasse zugreifen, die Array zurückgibt Java Basics - Anfänger-Themen 3
A Ein Array aus einer Klasse wird nicht sauber abgefüllt Java Basics - Anfänger-Themen 4
A Array einer eigenen Klasse sortieren Java Basics - Anfänger-Themen 11
G Eigene Klasse als Array, zugriff? Java Basics - Anfänger-Themen 2
K Generische Klasse mit innerer Klasse | Problem mit Array Java Basics - Anfänger-Themen 6
L Klasse in array schreiben Java Basics - Anfänger-Themen 2
T Char Array in fremder Klasse Java Basics - Anfänger-Themen 20
A Mehrere Instanzen einer eigenen Klasse in einem Array Java Basics - Anfänger-Themen 5
F Array aus selbstdefinierter Klasse Java Basics - Anfänger-Themen 6
J Zugriff auf ein Array über eine andere Klasse Java Basics - Anfänger-Themen 7
F Array einer eigenen Klasse erstellen. Java Basics - Anfänger-Themen 8
D "Ueber"-Klasse? / Label Array Probleme Java Basics - Anfänger-Themen 2
M probleme mit array (als attribut einer klasse) Java Basics - Anfänger-Themen 2
F Array einer eigenen Klasse Java Basics - Anfänger-Themen 5
C Array in Klasse aber keinen Zugriff Java Basics - Anfänger-Themen 7
V Array in andere Klasse laden Java Basics - Anfänger-Themen 12
P Array in Klasse geht nich Java Basics - Anfänger-Themen 8
N array klasse Java Basics - Anfänger-Themen 7
T Array über Klasse instanziieren Java Basics - Anfänger-Themen 5
G Array Objekte Klasse Java Basics - Anfänger-Themen 9
M Aus einer Klasse auf Array einer anderen zugreifen. WIE? Java Basics - Anfänger-Themen 4
W Nochmal das Decorator - Mit der abstrakten Klasse möglich? Java Basics - Anfänger-Themen 10
I @Inject in normaler Klasse? Java Basics - Anfänger-Themen 4
P Enum oder normale Klasse? Java Basics - Anfänger-Themen 10
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
P Wie kann ich meine Keylistener Klasse unterscheiden lassen, von welcher "Quelle" der Input kommt? Java Basics - Anfänger-Themen 2
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
Amina556 Eigene Klasse definieren Java Basics - Anfänger-Themen 9
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
M Klasse in Runden Klammern bei Objektimplementierung Java Basics - Anfänger-Themen 4
J Klassen Klasse als Komponententyp bei Feldern Java Basics - Anfänger-Themen 2
J Klassen Instanzen einer Klasse in einer anderen unabhängigen Klasse nutzen Java Basics - Anfänger-Themen 4
Detlef Bosau nichtstatische Innere Klasse, this Pointer. Java Basics - Anfänger-Themen 47
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
B Klasse statisch erstellen da n-mal geladen Java Basics - Anfänger-Themen 3
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
XWing Random Punkte erstellen mit der Random klasse Java Basics - Anfänger-Themen 15
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
frager2345 Optional Klasse Java Java Basics - Anfänger-Themen 2
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
H Klassen Typ und Intitialisierungs-Klasse, wer bestimmt was? Java Basics - Anfänger-Themen 1
T Thread beenden aus zweiter Klasse Java Basics - Anfänger-Themen 4
frager2345 Java Klasse Buch verwalten Java Basics - Anfänger-Themen 0
frager2345 Java eigen Klasse zum verwalten von Büchern Java Basics - Anfänger-Themen 3
T Zugriff auf Control anderer Klasse Java Basics - Anfänger-Themen 5
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
G zwei Instanzen einer Klasse Java Basics - Anfänger-Themen 29
C Int an andere Klasse übergeben Java Basics - Anfänger-Themen 26
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
B Klasse "Character" Java Basics - Anfänger-Themen 2
F Suche nach betreuender Person für eine Jahresarbeit der 12. Klasse. Java Basics - Anfänger-Themen 6
H Mit setter-Methode JLabel in einer andern Klasse ändern. Java Basics - Anfänger-Themen 40
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
U Warum kann ich die Methode in der ENUM Klasse nicht aufrufen? Und warum geht die Switch nicht? Java Basics - Anfänger-Themen 8
L Klassen Vektor Klasse Java Basics - Anfänger-Themen 2
I Interface von einer EJB Klasse, um Code zu reduzieren Java Basics - Anfänger-Themen 1
M Interface als Parameter einer Klasse Java Basics - Anfänger-Themen 8
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
X Was ist der Unterschied zwischen materialisierten und nichtmaterialisierten Attributen einer Klasse? Java Basics - Anfänger-Themen 1
W Klasse existiert prüfen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben