Um eine Klasse klonbar zu machen, müssen wir in Java die Schnittstelle Cloneable
implementieren. Die Implementierung dieser Schnittstelle bedeutet nur, dass diese Klasse das Klonen unterstützt.Warum Klassen in Java nicht standardmäßig geklont werden können
Aber was ist das Motiv von Java-Sprachdesignern, dass sie "standardmäßig nicht zulassen" als Standardfunktionalität jeder Klasse verwenden dürfen?
Wir haben Standard-Implementierung für flache Kopie bereits vorhanden. Warum diese Einschränkung?
Frage ist, wenn Sprache Standardmechanismus für seichte Kopie bietet, warum nicht erlauben, es so zu verwenden, wie es ist? Warum ein zusätzlicher Schritt zur Implementierung von Clonable? –
Wie ich bereits sagte, weil dies diese Methode auf den Vertrag jedes einzelnen Java-Objekts zwingen würde, und die standardmäßige flache Kopie ** bricht die Klasseninvarianten ** der meisten Java-Klassen. Dies bedeutet, dass die Klasse gezwungen wäre, gegen ihren Willen zu handeln. Einige Objekte sind nicht einmal theoretisch klonierbar. Denken Sie einen Augenblick an das * Singleton * -Muster. –