Heim  >  Artikel  >  Java  >  Warum ist die „clone()'-Methode von Java geschützt und nicht Teil der „Cloneable'-Schnittstelle?

Warum ist die „clone()'-Methode von Java geschützt und nicht Teil der „Cloneable'-Schnittstelle?

DDD
DDDOriginal
2024-11-25 11:02:11424Durchsuche

Why is Java’s `clone()` Method Protected and Not Part of the `Cloneable` Interface?

Geschützte Clone()-Methode in Java: Eine rätselhafte Entscheidung

Java's clone() ist eine besondere Methode, die in java.lang geschützt ist. Objekt. Warum diese verwirrende Entscheidung?

Klonbare Schnittstelle kann nicht genutzt werden

Im Gegensatz zu anderen Frameworks, in denen kopierbare Klassen eine klonbare Schnittstelle implementieren, wird Javas clone() in Cloneable nicht deklariert. Eine Prüfung der Klonbarkeit über die Schnittstelle ist daher nicht möglich. Code wie „if(a instanceof Cloneable)“ kann nicht ermitteln, ob „a“ das Klonen unterstützt.

Reflexionsabhängigkeit

Um diese Einschränkung zu umgehen, kann Reflexion eingesetzt werden. Dieser Ansatz führt jedoch zu unnötiger Komplexität und erfordert Kenntnisse über konkrete Klassenimplementierungen. Es basiert auch auf einem strengen Protokoll, das oft nicht dokumentiert und nicht durchsetzbar ist.

Bedauerliches Design

Josh Bloch, Autor von Effective Java, bezeichnet das Design von Cloneable als „einen Fehler“. Es macht keine wirksame Werbung für die Unterstützung des Klonens und erzwingt ein umständliches Protokoll. Stattdessen schlägt er vor, Cloneable auf Klassenebene zu implementieren und so die Einhaltung des Protokolls sicherzustellen.

Das obige ist der detaillierte Inhalt vonWarum ist die „clone()'-Methode von Java geschützt und nicht Teil der „Cloneable'-Schnittstelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn