public List<String> foo1() {
List<String> retval = bar();
if (retval == null)
return Collections.emptyList();
else
return retval;
}
public List<String> foo2() {
List<String> retval = bar();
return retval == null ? Collections.emptyList() : retval;
}
Pourquoi est-ce que foo1()
compile bien alors que foo2()
a une erreur ? (pour être plus précis "Erreur de type : impossible de convertir une liste<capture#1-de ? extends Object> en liste<String>" )
J'aurais pensé que les deux fonctions se compileraient dans le même bytecode, donc un compilateur intelligent devrait déduire le type correct pour la fonction emptyList()
...