Heim > Java > javaLernprogramm > Warum sind die „remove()'-Methoden von Java Collections nicht generisch?

Warum sind die „remove()'-Methoden von Java Collections nicht generisch?

Susan Sarandon
Freigeben: 2024-12-11 09:22:10
Original
560 Leute haben es durchsucht

Why Aren't Java Collections' `remove()` Methods Generic?

Warum sind die Remove-Methoden von Java Collections nicht generisch?

Das Java Collections-Framework bietet eine Methode „remove()“ sowohl für Sammlungen als auch für Karten. Diese Methode ist jedoch nicht generisch, d. h. sie akzeptiert ein Objekt als Argument und keinen Parameter vom Typ E. Diese Entscheidung hat Fragen zu den potenziellen Vorteilen aufgeworfen, die sich aus der generischen Gestaltung von „remove()“ ergeben.

Ein Argument für die generische Gestaltung von „remove()“ ist, dass dadurch Fehler bei der Kompilierung verhindert werden könnten, wenn versehentlich versucht wird, einen inkompatiblen Typ aus einer Sammlung zu entfernen . Wenn beispielsweise eine Collection Wenn versehentlich ein Set übergeben wird, würde dies zu einem Fehler bei der Kompilierung und nicht später zu einem Debugging-Problem führen.

Der Grund, warum „remove()“ jedoch nicht generisch ist, liegt in erster Linie darin, dass es Folgendes zulässt Entfernung von Objekten basierend auf Gleichheit und nicht auf strenger Typprüfung. Gemäß der Spezifikation der Methode „remove()“ wird das zu entfernende Element als Objekt e identifiziert, sodass (o==null ? e==null : o.equals(e)) wahr ist. Dies ermöglicht Flexibilität beim Entfernen von Elementen, da das entfernte Objekt nicht vom gleichen Typ sein muss wie das an die Methode „remove()“ übergebene Objekt.

Zum Beispiel ist es möglich, eine Map. Beim Aufruf von „remove()“ mit einer LinkedList als Argument sollte der Schlüssel entfernt werden, der eine Liste mit demselben Inhalt ist, auch wenn es sich um eine andere Implementierung von List handelt. Dies wäre nicht möglich, wenn „remove()“ generisch und auf einen einzelnen Typparameter beschränkt wäre.

Das obige ist der detaillierte Inhalt vonWarum sind die „remove()'-Methoden von Java Collections nicht generisch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage