Ich bin kürzlich über den Javadoc für die Collection.checkedMap
Familie von Funktionen zum Erstellen dynamisch typsicherer Ansichten der Standard-Collections-Typen gestolpert. Wenn man bedenkt, dass sie zusätzlich zu den Sammlungen eine weitere Sicherheitsschicht hinzufügen, die einen relativ häufigen Programmierfehler diagnostiziert, hätte ich gedacht, dass sie beliebter sein würden. Aus irgendeinem Grund habe ich sie in all den großen Java-Projekten, an denen ich gearbeitet habe, nicht einmal verwendet.Warum werden Collections.checkedMap und Freunde nicht häufiger verwendet?
Meine Frage ist dies: Gibt es einen bestimmten Grund, dass Java-Programmierer diese geprüften Wrapper nicht häufiger verwenden? Oder ist es nur Mangel an Nutzen/Mangel an Wissen über ihre Existenz?
BEARBEITEN: Um meine Frage zu klären, enthalten die generischen Versionen der Sammlungen noch typsichere Funktionen. Map
's containsKey
, containsValue
, remove
und get
alle arbeiten zum Beispiel auf Object
. Meine Hauptfrage ist, dass bei diesem Typ - Unsicherheit - mehr Personen die geprüften Implementierungen nicht verwenden, um Runtime-Typ-Verletzungen zu diagnostizieren.
Der Hauptgrund, dass es scheint, dass es eine gute Idee sein könnte, diese Container zu haben, ist für Dinge wie Map's .put(), die ein Objekt statt ein K (zum Beispiel eine Map) nimmt). Es scheint nicht wirklich wie ein Missbrauch von Generika zu sein, versehentlich ein Objekt des falschen Typs zu einer Karte hinzuzufügen; das ist mehr ein Programmierfehler. –
templatetypedef
@templatetypedef: Ich bin mir nicht sicher, was du meinst. Map's 'put' wird als' put (K, V) 'angegeben. Sie können kein altes Objekt in eine Map einfügen, wenn Sie Generika verwenden. –
@Mark Peters- Mein Fehler; Ich meinte "Put", was ein "Objekt" anstatt eines "K" bedeutet. 'remove' ist genauso wie' containsKey' und 'containsValue'. – templatetypedef