По каким причинам Map.get (Object key) не является (полностью) универсальным - PullRequest
392 голосов
/ 13 мая 2009

По каким причинам было принято решение не использовать полностью общий метод get в интерфейсе java.util.Map<K, V>.

Для уточнения вопроса, подпись метода

V get(Object key)

вместо

V get(K key)

и мне интересно, почему (то же самое для remove, containsKey, containsValue).

Ответы [ 11 ]

0 голосов
/ 09 февраля 2017

Мы сейчас делаем большой рефакторинг, и нам не хватало этого строго типизированного get (), чтобы проверить, что мы не пропустили некоторые get () со старым типом.

Но я нашел обходной / уродливый трюк для проверки времени компиляции: создайте интерфейс Map со строго типизированным get, Содержит ключ, удалите ... и поместите его в пакет java.util вашего проекта.

Вы получите ошибки компиляции только при вызове get (), ... с неправильными типами, все остальное кажется нормальным для компилятора (по крайней мере, внутри eclipse kepler).

Не забудьте удалить этот интерфейс после проверки вашей сборки, так как это не то, что вы хотите во время выполнения.

...