clone
ist eine Methode der Object-Klasse. Damit eine Klasse "klonbar" ist, sollte sie den Marker Cloneable
interface implementieren. String
class implementiert diese Schnittstelle nicht und überschreibt nicht die Klonmethode, daher der Fehler.
Ich hoffe, das obige Snippet dient Bildungszwecken, denn Sie sollten niemals clone
auf Zeichenketten in Java aufrufen müssen, vorausgesetzt:
new String(String)
, der wie ein Kopierkonstruktor wirkt und dem Aufruf clone()
entspricht. Object.clone()
ist geschützt. Es ist eine knifflige API zu verwenden.
Normalerweise macht man clone()
verfügbar, wenn man Object erweitert, indem man die Sichtbarkeit der Methode erweitert.
Clone für einen String hat wenig Bedeutung, da es sowohl final
als auch unveränderlich ist.
Es gibt einen Grund, eine Zeichenfolge zu kopieren. das kann gemacht werden mit:
%Vor% clone () ist eine geschützte Methode für die Object-Klasse. Wenn Sie möchten, dass eine Klasse klonbar ist, sollten Sie Cloneable
Es konnte offensichtlich nicht kompiliert werden. Object.clone
hat geschützten Zugriff.
Darüber hinaus ist es innerhalb der Klasse selbst zugänglich und innerhalb der selbe Paket ..., ein geschütztes Mitglied kann auch von a erreicht werden Klasse durch Objektreferenzen, die mindestens vom selben Typ sind wie die Klasse
Die java.lang.Cloneable-Schnittstelle muss von der Klasse implementiert werden, deren Objektklon wir erstellen möchten. Wenn wir die Schnittstelle Cloneable nicht implementieren , generiert clone () CloneNotSupportedException .
Die clone () -Methode ist in der Object-Klasse definiert. Die Syntax der clone () -Methode lautet wie folgt:
%Vor%Damit eine Klasse "klonbar" ist, sollte sie die Cloneable-Schnittstelle implementieren. Die String-Klasse implementiert diese Schnittstelle nicht und überschreibt nicht die Klon-Methode, daher der Fehler.
protected Object clone () gibt CloneNotSupportedException aus und gibt die exakte Kopie (Klon) dieses Objekts zurück.
Strings in Java sind unveränderlich. Fühlen Sie sich frei, sie über Methoden / Klassen zu teilen Es gibt bereits einen Konstruktor new String (String), der wie ein Kopierkonstruktor funktioniert und dem Aufruf clone () ziemlich ähnlich ist.
Gewöhnlich macht man clone () verfügbar, wenn man Object erweitert, indem man die Sichtbarkeit der Methode erweitert.
Klonen auf eine beliebige Zeichenfolge hat wenig Bedeutung, da sie sowohl endgültig als auch unveränderlich ist.