Heim >Java >javaLernprogramm >Warum schränkt Java das Überladen von Methoden mit Override-äquivalenten Methoden ein?

Warum schränkt Java das Überladen von Methoden mit Override-äquivalenten Methoden ein?

Barbara Streisand
Barbara StreisandOriginal
2024-12-13 09:25:14278Durchsuche

Why Does Java Restrict Method Overloading with Override-Equivalent Methods?

Methodenüberladung: Javas Einschränkung für Override-äquivalente Methoden

Java verbietet das Vorhandensein von zwei Methoden innerhalb einer Klasse mit identischer Löschung trotz unterschiedlicher Parameter Typen. Diese Einschränkung ergibt sich aus dem Bemühen der Sprache, die Kompatibilität mit Legacy-Code unter Verwendung von Rohtypen aufrechtzuerhalten.

Der Kompilierungsfehler tritt auf, wenn zwei Methoden mit unterschiedlichen Parametertypen, wie etwa add(Set) und add(Set

Diese Einschränkung besteht, um Konflikte in Situationen zu vermeiden, in denen eine Klasse mithilfe von Raw von einer Superklasse erbt Typen. In solchen Fällen muss der Compiler Rohtypen als Override-Äquivalent zu generierten Typen behandeln, um ein ordnungsgemäßes Überschreiben der Methode sicherzustellen.

Betrachten Sie beispielsweise eine Legacy-Klasse CollectionConverter mit der Methode toList(Collection c) unter Verwendung von Rohtypen. Wenn Sie diese Klasse erweitern und eine neue Methode toList(Collection c) hinzufügen, wären beide Methoden überschreibungsäquivalent und erfüllen die Überschreibungsanforderung.

Wenn Sie jedoch später versehentlich eine dritte Methode toList( hinzufügen Bei der Sammlung c) in der Unterklasse ist der Compiler mit Unklarheiten konfrontiert, da er nicht bestimmen kann, welche Methode überschrieben werden soll. Um diese Mehrdeutigkeit zu beseitigen, erzwingt Java eine Regel gegen mehrere Override-äquivalente Methoden.

Es ist wichtig zu beachten, dass diese Einschränkung keine Einschränkung der Löschung darstellt, sondern eine Designentscheidung zur Unterstützung der Kompatibilität mit vorhandenem Code. Durch das Hinzufügen von Generika zu Methodenbezeichnern wäre die Sicherstellung der Eindeutigkeit zur Kompilierungszeit ohne die Notwendigkeit dieser Regel möglich gewesen. Dennoch behält Java aus Kompatibilitätsgründen diese Einschränkung bei.

Das obige ist der detaillierte Inhalt vonWarum schränkt Java das Überladen von Methoden mit Override-äquivalenten Methoden ein?. 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