clone(), Clonable und Felder von Interfacetypen

Status
Nicht offen für weitere Antworten.

Biesterfeld

Aktives Mitglied
Hej,

wozu ist eigentlich dieses dämliche Interface Clonable da, wenn es mir keinen Pups weiterhilft?

Ich verwende grundsätzlich für Klassenvariablen Typen von Interfaces. Wenn ich aber nun z.B. ein Set clonen möchte geht etwas wie das nicht:

Code:
public class Klasse{
  
  private final Set meinSet;

  public Klasse(){
    this.meinSet = new HashSet();
  }
  
  public Klasse( Set set ){
    this.meinSet = set;
  }

  public Set cloneMeinSet(){
    return ( Set ) this.meinSet.clone()
// -------------------------------^^^^
  }
}

Natürlich könnte ich vor dem Aufruf von clone() nach HashSet casten, allerdings wähle ich ja bewusst die Interfacedeklaration um z.B. im Falle des zweiten Konstruktors unabhängig von der konkreten Implementierung zu bleiben. Und mit instanceOf alle möglichen Sets abzufragen und entsprechend zu casten kann ja auch nicht im Sinne der OOP sein.

Und Clonable bringt mir eben in einem solchen Fall herzlich wenig, dadurch wird clone() auch nicht sichtbarer.
Meine Frage: Wie umgeht ihr solche Probleme?

Herzlichen Dank und Beste Grüße
Biesterfeld
 
B

Beni

Gast
Nicht alles was dir nicht weiterhilft, ist dämlich... :wink:

Clonable gibt einfach an, dass diese Objekt tatsächlich die clone-Methode implementiert hat. Laut API sollten Klassen, die nicht Cloneable implementieren, auch kein clone implementiert haben.
Theoretisch könnte man dann mit "object instanceof Cloneable" testen, ob ein Objekt geklont werden kann.

Wie sinnvoll das ist...
Wieso eine Methode in allen Objekten haben, die man doch nicht implementiert, bzw. wenn mans implementiert, dann soll ein Interface daher? Dann würde die Methode auch in das Interface gehören, und nicht in Object. Wenn es einen tieferen Sinn hat, ich kenne ihn nicht :wink:

Ich mache lieber Copykonstruktoren. Da übergibt man dem Konstruktor ein "Original", und die Kopie kopiert sich das, was sie benötigt. Manchmal mach ich auch ein "Copyable"-Interface, mit einer public Methode "copy".
 

Biesterfeld

Aktives Mitglied
Hej,

Wieso eine Methode in allen Objekten haben, die man doch nicht implementiert, bzw. wenn mans implementiert, dann soll ein Interface daher? Dann würde die Methode auch in das Interface gehören, und nicht in Object.

Naja, das mein ich ja! Was nützt mir ein Vertrag ohne eine einzige Klausel? Und was nützt mir eine Klausel ohne Vertrag?
clone() hätte ganz klar nach Clonable gehört. Erst recht wenn Object schon clone() beherrbergt aber nicht rausrückt.

Ich mache lieber Copykonstruktoren. Da übergibt man dem Konstruktor ein "Original", und die Kopie kopiert sich das, was sie benötigt. Manchmal mach ich auch ein "Copyable"-Interface, mit einer public Methode "copy".

Genau das mache ich auch. Aber es bringt mir eben bei meinem konkreten Problem nichts, wo ich auf Objekte der Standard-API zugreife und die entsprechende clone()-Implementation auch gIch mache lieber Copykonstruktoren. Da übergibt man dem Konstruktor ein "Original", und die Kopie kopiert sich das, was sie benötigt. Manchmal mach ich auch ein "Copyable"-Interface, mit einer public Methode "copy".
nau das ist was ich benötige.

Dank dir trotzdem und Beste Grüße
Biesterfeld
 

Biesterfeld

Aktives Mitglied
Hej,

und nochmal im ganzen Satz, da is vorhin was schief gelaufen:

Genau das mache ich auch. Aber es bringt mir eben bei meinem konkreten Problem nichts, wo ich auf Objekte der Standard-API zugreife und die entsprechende clone()-Implementation auch gIch mache lieber Copykonstruktoren. Da übergibt man dem Konstruktor ein "Original", und die Kopie kopiert sich das, was sie benötigt. Manchmal mach ich auch ein "Copyable"-Interface, mit einer public Methode "copy".
nau das ist was ich benötige.

Hätte heissen müssen:

Genau das mache ich auch. Aber es bringt mir eben bei meinem konkreten Problem nichts, wo ich auf Objekte der Standard-API zugreife und die entsprechende clone()-Implementierung auch genau das ist was ich benötige.

Beste grüße
Biesterfeld
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Compiler-Fehler SupressWarning für clone() Java Basics - Anfänger-Themen 6
S Copy - Constructor vs clone() Java Basics - Anfänger-Themen 20
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
F Methoden Object.clone() Java Basics - Anfänger-Themen 1
B Klasse: Methode Clone Java Basics - Anfänger-Themen 5
Q Methode clone() bei Vererbung Java Basics - Anfänger-Themen 5
U "Clone" Fragen Java Basics - Anfänger-Themen 3
Luk10 Arrays.copy(myArray) vs myArray.clone() Java Basics - Anfänger-Themen 9
H Interface clone-Methode in Interface Java Basics - Anfänger-Themen 6
A Shallow copy .super.clone() Java Basics - Anfänger-Themen 2
B Deep Clone Java Basics - Anfänger-Themen 12
K clone() Java Basics - Anfänger-Themen 12
D probs mit clone und equals Java Basics - Anfänger-Themen 10
B clone() und casts umschreiben Java Basics - Anfänger-Themen 4
S Eigenes Objekt temporär verändern? (Clone)? Java Basics - Anfänger-Themen 12
T Deep Clone Java Basics - Anfänger-Themen 3
I clone() und Referenzen Java Basics - Anfänger-Themen 25
E Vector und clone() Java Basics - Anfänger-Themen 6
M Brauch ich dazu clone()? Java Basics - Anfänger-Themen 5
C Frage zu clone() Java Basics - Anfänger-Themen 2
G Frage zu clone() Java Basics - Anfänger-Themen 6
G Problem clone und Vektor Java Basics - Anfänger-Themen 4
P Clone Methode treibt mich zum Wahnsinn Java Basics - Anfänger-Themen 10
M Arrays clonen mit clone() scheint nicht zu funktionieren Java Basics - Anfänger-Themen 4
S JPanel mit clone() duplizieren Java Basics - Anfänger-Themen 4
S Objekt klonen mit clone() Java Basics - Anfänger-Themen 3
E Clonable-Interface für Backups nutzen Java Basics - Anfänger-Themen 2
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
A Felder: arithmetisches und geometrisches Mittel Java Basics - Anfänger-Themen 3
L Datentypen Deklarierte Felder einer Generic Klasse bestimmen Java Basics - Anfänger-Themen 7
Elyt Bei Monopoly werden Felder übersprungen Java Basics - Anfänger-Themen 2
L Listen und Felder Java Basics - Anfänger-Themen 2
neerual Int-Felder erzeugen Java Basics - Anfänger-Themen 16
P Felder König array Java Basics - Anfänger-Themen 6
T Art 4 Felder Matrix Memory Java Basics - Anfänger-Themen 2
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
D Felder Java Basics - Anfänger-Themen 2
D Übung Felder java Error kompilieren Java Basics - Anfänger-Themen 4
M Felder leer - überprüfen? Java Basics - Anfänger-Themen 2
S reflection und felder Java Basics - Anfänger-Themen 12
X Verknüpfte Excel Felder mitändern Java Basics - Anfänger-Themen 6
Z Erste Schritte 9x9 Felder Erzeugen+Aufrufen Java Basics - Anfänger-Themen 1
S Wie instanziert man Felder? Java Basics - Anfänger-Themen 11
V Zwei Felder Adderen Java Basics - Anfänger-Themen 2
W Methoden Falsche Felder von Methode belgegt Java Basics - Anfänger-Themen 14
M Spielfeld mit 10x10 Felder Java Basics - Anfänger-Themen 13
E Felder bei falscher Eingabe leeren Java Basics - Anfänger-Themen 8
S Felder mit Variablen/Tabellen verknüpfen! Java Basics - Anfänger-Themen 3
M Felder mit Methode verändern Java Basics - Anfänger-Themen 11
W Datentypen Felder mit Potenzen Java Basics - Anfänger-Themen 31
C Erste Schritte felder, die public final sind Java Basics - Anfänger-Themen 6
B Frage zur Effizienz - alle Array-Felder initialisieren oder jedes Feld auf null prüfen? Java Basics - Anfänger-Themen 4
C Felder(Größte Zahl, Index) Java Basics - Anfänger-Themen 6
K Felder Java Basics - Anfänger-Themen 5
M 3 Felder, Barcode, reinschreiben in die DB Java Basics - Anfänger-Themen 30
D Datentypen Felder: Deklaration und Initialisierung Java Basics - Anfänger-Themen 5
C Java Felder bearbeiten Hilfe Java Basics - Anfänger-Themen 4
H Felder mit unterschiedl. Typen sortieren Java Basics - Anfänger-Themen 5
B n-dimensionale Felder in m-dimensionale Felder konvertiert Java Basics - Anfänger-Themen 30
H felder vergleichen Java Basics - Anfänger-Themen 6
F Felder von aufrufender Klasse ändern Java Basics - Anfänger-Themen 16
A Felder Java Basics - Anfänger-Themen 7
A Mehrdimensionale Felder Java Basics - Anfänger-Themen 18
C Felder im Dialog zurücksetzen Java Basics - Anfänger-Themen 3
E Wechselnde Felder erzeugen Java Basics - Anfänger-Themen 15
maddin86 Eine Methode für ein- und zweidimensionale double Felder als Parameter? Java Basics - Anfänger-Themen 5
A Felder- Minimum/Maximum Java Basics - Anfänger-Themen 2
D Felder Java Basics - Anfänger-Themen 7
D Felder Java Basics - Anfänger-Themen 2
T Border Layout alle mittleren felder gleich groß Java Basics - Anfänger-Themen 3
C Speicherverwaltung für Felder Java Basics - Anfänger-Themen 8
S EINDIMENSIONALE FELDER? Java Basics - Anfänger-Themen 23
G 3. Aufgaben und komme nicht weiter (Felder, Methoden) Java Basics - Anfänger-Themen 3
M Felder (Wo liegt der Fehler?) Java Basics - Anfänger-Themen 2
D Wie werden Felder grau? Java Basics - Anfänger-Themen 26
S generische Felder Java Basics - Anfänger-Themen 2
A Felder Java Basics - Anfänger-Themen 3
D String mit split teilen und leere Felder behalten Java Basics - Anfänger-Themen 4
R Felder unterschiedlichen Typs Java Basics - Anfänger-Themen 9
J 2 Felder aus DB selektieren u. in JList - eines verstecken? Java Basics - Anfänger-Themen 7
T Suche über mehrere Felder value = key = value Java Basics - Anfänger-Themen 3
B Array doppelt Felder löschen Java Basics - Anfänger-Themen 27
G Felder kopieren Java Basics - Anfänger-Themen 8
G Felder-Länge Java Basics - Anfänger-Themen 2
G Felder zurückgeben? Java Basics - Anfänger-Themen 3
C Früheste Datum aus 3 Felder Java Basics - Anfänger-Themen 20
M Felder innerhalb eines Arrays vergleichen Java Basics - Anfänger-Themen 2
D Felder vergleichen Java Basics - Anfänger-Themen 14
D Verbindung von Methoden und Felder Java Basics - Anfänger-Themen 3
A Aus dem menü heraus andere Felder bearbeiten Java Basics - Anfänger-Themen 2
S Statische Felder - statische Methoden Java Basics - Anfänger-Themen 2
G variable felder in java? geht das? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben