Здесь у вас нет статического инициализатора (ключевое слово static отсутствует вообще).
По сути, вы создаете новый анонимный подкласс HashMap
и определяете здесь блок инициализатора экземпляра. Кстати, это работает только потому, что HashMap
не является окончательным.
Поскольку вы получите анонимный подкласс HashMap
, оператор diamond здесь не работает, поскольку подкласс будет скомпилирован, как если бы вы написали ... extends HashMap<Object, Object>
, и это явно не совместимо с Map<String, String>
.