"Clone" Fragen

unknown

Bekanntes Mitglied
hallo

Ein paar Fragen bezüglich der Clone-Methode.

1. Bei einer Subklasse möchte ich die Clone-Methode überschreiben und bekomme beim folgenden Befehl, diesen Error:
"Unreachable catch block for CloneNotSupportedException. This exception is never thrown from the try statement body"
Java:
catch (CloneNotSupportedException ex)

2. In der Theorie steht, dass die referenzierte Objekte "u.a. String" im neuen "gelcolnten" Objekt nur referenziert werden, sprich wenn ich ein String im "gelcolnten" Objekt ändere, dann wird es im Original-Objekt ebenfalls geändert. Ich habe dieses getestet und es ist nicht der Fall, weiss jemand wieso?

3. Wie kann man ein String überhaupt clonen? bei mir kommt folgender Error:
"The method clone() from the type Object is not visible"
Java:
String s1 = "Hello";
String s2 = "Hello";
String s3 = new String(s1);
String s4 = s2.clone();
 
1. Poste mehr code (geh' aber schonmal davon aus, dass der Compiler recht hat 😉 )

2.+3.: In welcher "Theorie"? Strings sind immutable, d.h. man kann einen String an sich nicht verändern. Bezog sich die Frage allgemein auf Referenzen (zu anderen Objekten als Strings)?
 
Die erste Frage hat sich geklärt.

die Frage bezog sich auf alle Objekte u.a. auch String. Du meinst also, in der Clone-Methode müssen Strings nicht wie die anderen referenzierten Objekte explizit geklont werden?

Java:
...
String mystring;
Object1 = obj1;
Object2 = obj2;
...
public Object clone(){
...
cloned.Obj1 = (Object1)obj1.clone();
cloned.Obj2 = (Object1)obj2.clone();
...
}
oder?
Java:
...
String mystring;
Object1 = obj1;
Object2 = obj2;
...
public Object clone(){
...
cloned.mystring = (String)mystring.clone();
cloned.Obj1 = (Object1)obj1.clone();
cloned.Obj2 = (Object1)obj2.clone();
...
}
wobei "mystring.clone();" funktioniert bei mir sowieso nicht.
 

Zurück
Oben