Возможный дубликат:
Инициализация двойной скобки (анонимный внутренний класс) с алмазным оператором
В Java 7 и более поздних версиях алмаз можно использовать для вывода типов, как обычно, без проблем:
List<String> list = new ArrayList<>();
Однако он не может для анонимных внутренних классов следующим образом:
List<String> st = new List<>() { //Doesn't compile
//Implementation here
}
Почему это? Логически в этом сценарии я могу определенно указать тип как String. Есть ли логическая причина для этого решения, когда тип не может быть фактически выведен на анонимные внутренние классы, или он был опущен по другим причинам?