Clone() in java
import java.util.*;
import java.lang.*;
public class Test{
public static void main(String[] argv){
String s1="abc";
String s2=(String) s1.clone();
}
}
Warum dieser einfache test-Programm nicht funktioniert?
- In welcher Weise funktioniert es also nicht?
- Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - unreported exception java.lang.CloneNotSupportedException; muss abgefangen werden oder erklärt werden geworfen zu testen.Test.main(Test.java:9) Java Result: 1
Du musst angemeldet sein, um einen Kommentar abzugeben.
clone
ist eine Methode der Object-Klasse. Für eine Klasse werden "cloneable" es implementieren sollte der markerCloneable
- Schnittstelle.String
Klasse nicht implementieren diese Schnittstelle und nicht überschreiben die clone-Methode daher der Fehler.Ich hoffe das obige snippet ist für pädagogische Zwecke, denn man sollte nie das Gefühl, die Notwendigkeit zu nennen
clone
auf strings in Java gegeben, dass:new String(String)
wirkt wie eine Kopie-Konstruktor und ist ziemlich gleich zu Ihremclone()
nennen.clone
ist nicht eine öffentliche Methode inCloneable
so implementieren, dass wäre kein Problem.Object.clone()
geschützt ist. Es ist eine schwierige API zu verwenden.In der Regel eine macht
clone()
wenn ein Objekt erstreckt sich durch die Erweiterung die Methode ist, die Sichtbarkeit.Klon auf jede saite hat wenig Bedeutung, da es sowohl
final
und unveränderlich.Gibt es einen Grund, um eine Zeichenfolge kopieren; das getan werden kann, mit:
clone () - ist eine geschützte Methode, die auf der Object-Klasse. Wenn Sie möchten, eine Klasse cloneable das Allgemeine Muster ist die Umsetzung Cloneable und machen, dass die Methode öffentlich.
Offensichtlich konnte nicht kompiliert werden.
Object.clone
hat geschützten Zugriff.Für eine Klasse werden "klonbar", die es umsetzen sollten, die marker, die Cloneable-Schnittstelle. Die String-Klasse nicht implementieren diese Schnittstelle und nicht überschreiben die clone-Methode daher der Fehler.
protected Object clone() throws CloneNotSupportedException erstellt und gibt die exakte Kopie (Klon) von diesem Objekt.
Strings in Java unveränderlich sind. Fühlen Sie sich frei zu teilen Sie Sie über Methoden/Klassen
Es gibt schon einen Konstruktor new String(String), die wirkt wie eine Kopie-Konstruktor und ist ziemlich gleich zu Ihrem clone () - Aufruf.
In der Regel eine macht clone() wenn ein Objekt erstreckt sich durch die Erweiterung die Methode ist, die Sichtbarkeit.
Klon auf jede saite hat wenig Sinn, da es beides ist endgültig und unveränderlich.