Этот вопрос вызван странным поведением HashMap.put()
Думаю, я понимаю, почему Map<K,V>.put
принимает K
, но Map<K,V>.get
принимает Object
, похоже, что это не приведет к сломанию слишком большого кода.
Теперь мы попадаем в сценарий, подверженный ошибкам:
java.util.HashMap<Long, String> m = new java.util.HashMap<Long, String>();
m.put(5L,"Five"); // compiler barfs on m.put(5, "Five")
m.contains(5); // no complains from compiler, but returns false
Не удалось ли это решить, вернув true, если значение Long
находилось в диапазоне int
и значения равны?