Dlaczego nie można wnioskować o diamentach na anonimowych klasach wewnętrznych?
W Javie 7 i późniejszych, diament może być używany do wnioskowania typów normalnie tak bez problemu:
List<String> list = new ArrayList<>();
Jednak dla anonimowych klas wewnętrznych takich jak ten:
List<String> st = new List<>() { //Doesn't compile
//Implementation here
}
Dlaczego to? Logicznie w tym scenariuszu mogę zdecydowanie wywnioskować typ jakoString
. Czy istnieje logiczna przyczyna tej decyzji, w której typ nie może być faktycznie wyprowadzony z anonimowych klas wewnętrznych, czy też został pominięty z innych powodów?