Niedawno natknąłem się na Javadoc dla rodziny Collection.checkedMap
funkcji do tworzenia dynamicznie bezpiecznych widoków standardowych typów kolekcji. Biorąc pod uwagę, że dodają kolejną warstwę bezpieczeństwa do kolekcji, która diagnozuje względnie powszechny błąd programisty, pomyślałbym, że będą bardziej popularne. Z jakiegoś powodu we wszystkich dużych projektach Java, nad którymi pracowałem, nie widziałem ich już raz.Dlaczego Collection.checkedMap i znajomi nie są częściej używane?
Moje pytanie brzmi: czy istnieje szczególny powód, dla którego programiści Java częściej nie używają tych sprawdzonych opakowań? Czy jest to po prostu brak korzyści/braku wiedzy o ich istnieniu?
EDIT: Aby wyjaśnić moje pytanie, ogólne wersje kolekcji nadal zawierają niebezpieczne funkcje. , containsValue
, remove
i wszystkie działają na przykład na Object
. Moje główne pytanie dotyczy tego, dlaczego więcej osób nie używa sprawdzonych implementacji do diagnozowania naruszeń typu środowiska wykonawczego.
Głównym powodem, dla którego może wydawać się dobrym pomysłem na posiadanie tych pojemników, jest na przykład funkcja .put() mapy, która pobiera obiekt, a nie K (na przykład na mapie). To naprawdę nie wygląda na nadużycie generyków, aby przypadkowo dodać obiekt niewłaściwego typu do mapy; to bardziej błąd programisty. –
templatetypedef
@templatetypedef: Nie jestem pewien co masz na myśli. "Put" mapy jest określone jako 'put (K, V)'. Nie możesz umieścić żadnego starego obiektu w Mapie, jeśli używasz generycznych. –
@ Mark Peters- Mój błąd; Miałem na myśli 'put', który przyjmuje' Object' zamiast 'K'. "remove" jest tą samą metodą, co 'containsKey' i' containsValue'. – templatetypedef