Sto leggendo OCP Java SE7, certification guide from Mala Gupta. A pagina 297, il seguente frammento di codiceQuali modifiche nell'algoritmo di inferenza del tipo causano questo comportamento?
import java.util.HashMap;
import java.util.Map;
public class TestGenericTypeInference {
Map<String,Double> salaryMap = new HashMap<>();
Map<String,Object> copySalaryMap = new HashMap<>(salaryMap);
}
sta compilando con Java 8, ma con Java 7 il compilatore si lamenta:
TestGenericTypeInference.java:8: error: incompatible types: HashMap<String,Double> cannot be converted to Map<String,Object>
Map<String,Object> copySalaryMap = new HashMap<>(salaryMap);
^
La mia domanda è: Quale cambiamento nell'algoritmo di inferenza di tipo provoca questo comportamento?
Ma può davvero 'new HashMap <> (salaryMap);' essere considerato come un'invocazione di metodo generico nidificata? –
La stessa cosa di 'new ArrayList <> (Collections.emptyList()) ', vedere sopra – Andremoniy
Sì, ma' salaryMap' è un riferimento a un oggetto non un'invocazione di metodo che richiede l'inferenza come 'Collections.emptyList'. –