Мне интересно, почему второе объявление карты (с использованием оператора ромба) не компилируется, когда это делает первое. Ошибка компиляции:
ошибка: невозможно вывести аргументы типа для HashMap; Карта map2 = новая HashMap() { причина: нельзя использовать '' с анонимными внутренними классами где K,V - переменные типа: K расширяет объект, объявленный в классе HashMap V расширяет объект, объявленный в классе HashMap
Код:
Map map1 = new HashMap() { //compiles fine
{
put("abc", "abc");
}
};
Map map2 = new HashMap<>() { //does not compile
{
put("abc", "abc");
}
};
РЕДАКТИРОВАТЬ
Спасибо за ваши ответы - я должен был лучше прочитать ошибку компиляции.
Я нашел объяснение в JLS
Это ошибка времени компиляции, если выражение создания экземпляра класса объявляет анонимный класс, используя форму "" для аргументов типа класса.