Was ist der Grund dafür, dass Object.clone () geschützt ist [duplizieren]?

8

Hier ist mein Testcode zum Überprüfen der Klonmethode,

%Vor%

Fehler beim Kompilieren: clone () hat einen geschützten Zugriff in java.lang.Object bei obj1.clone ()

  1. Was mache ich hier falsch?
  2. Was ist der Grund dafür, dass clone () geschützt ist?

Danke

Zusammen mit Antwort bearbeiten: Endlich sehe ich, dass meine Testumgebung funktioniert, wenn ich die Cloneable-Schnittstelle implementiert habe und die Clone-Methode überschrieben habe. Es funktioniert nicht mit dem Überschreiben der clone () - Methode aus der Object-Klasse. Hier ist der modifizierte Code,

%Vor%

2. Grund dafür, dass clone () geschützt ist: Ich habe das aus dem Buch Core Java gefunden,

Die Klonmethode ist eine geschützte Methode von Object, was bedeutet, dass Ihr Code sie nicht einfach aufrufen kann. Nur die Employee-Klasse kann Employee-Objekte klonen.

Es gibt einen Grund für diese Einschränkung. Überlegen Sie sich, auf welche Weise die Object-Klasse Klone implementieren kann. Es weiß nichts über das Objekt, so dass es nur eine Feld-für-Feld-Kopie machen kann. Wenn alle Datenfelder im Objekt Zahlen oder andere Grundtypen sind, ist das Kopieren der Felder einfach.

Wenn das Objekt jedoch Verweise auf Unterobjekte enthält, erhalten Sie durch Kopieren des Feldes einen weiteren Verweis auf das Unterobjekt, sodass das Original und die geklonten Objekte noch einige Informationen teilen.

Ich hoffe, dies ist hilfreich für andere

    
droidsites 25.10.2011, 10:09
quelle

1 Antwort

2

Sie sollten die Klonmethode in der Klasse Test außer Kraft setzen.

Warum es geschützt ist, wird hier diskutiert, obwohl es anscheinend keinen Konsens gibt.

    
Jim 25.10.2011 10:14
quelle

Tags und Links