Heim >Java >javaLernprogramm >Warum schränkt Java das Überladen von Methoden mit Override-äquivalenten Methoden ein?
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 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 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!