В вашем втором примере ссылка «map» имеет тип Map
, который является интерфейсом, реализованным HashMap
(и другими типами Map
). Этот интерфейс представляет собой контракт, в котором говорится, что объект сопоставляет ключи со значениями и поддерживает различные операции (например, put
, get
). Он ничего не говорит о реализации Map
(в данном случае a HashMap
).
Второй подход обычно предпочтительнее, поскольку вы обычно не хотели бы подвергать конкретную реализацию карты методам, используя Map
или через определение API.