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