Совместимость.
До того, как дженерики были доступны, был только get (Object o).
Если бы они изменили этот метод, чтобы получить ( o), это потенциально вынудило бы массовое сопровождение кода пользователям java просто заставить рабочую программу снова скомпилироваться.
Они могли бы ввести дополнительный метод, скажем, get_checked ( o) и отказаться от старого метода get (), чтобы был более мягкий путь перехода. Но по какой-то причине это не было сделано. (Ситуация, в которой мы сейчас находимся, заключается в том, что вам нужно установить такие инструменты, как findBugs, чтобы проверить совместимость типов между аргументом get () и объявленным типом ключа карты.)
Аргументы, относящиеся к семантике .equals (), являются, я думаю, фиктивными. (Технически они правильные, но я все еще думаю, что они фальшивые. Ни один здравомыслящий дизайнер никогда не сделает так, чтобы o1.equals (o2) был истинным, если у o1 и o2 нет общего суперкласса.)