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:
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
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