Ich habe mir das angeschaut und überlegt, warum sie das so gemacht haben. Ich glaube nicht, dass eine der vorhandenen Antworten erklärt, warum sie nicht einfach die neue generische Schnittstelle so gestalten konnten, dass sie nur den richtigen Typ für den Schlüssel akzeptiert. Der eigentliche Grund ist, dass sie trotz der Einführung von Generika KEINE neue Schnittstelle geschaffen haben. Die Map-Schnittstelle ist die gleiche alte nicht-generische Map, sie dient nur als generische und nicht-generische Version. Wenn Sie also eine Methode haben, die eine nicht-generische Map akzeptiert, können Sie ihr eine Map<String, Customer>
und es würde trotzdem funktionieren. Gleichzeitig akzeptiert der Vertrag für get Object, so dass die neue Schnittstelle auch diesen Vertrag unterstützen sollte.
Meiner Meinung nach hätten sie eine neue Schnittstelle hinzufügen und beides in die bestehende Sammlung implementieren sollen, aber sie haben sich für kompatible Schnittstellen entschieden, auch wenn das schlechteres Design für die get-Methode bedeutet. Beachten Sie, dass die Sammlungen selbst mit den bestehenden Methoden kompatibel wären, nur die Schnittstellen nicht.