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!