en procédant comme suit:
List<User> users = Collections.emptyList();
Le type de la liste retournée de Collections.emptyList();
sera inférée comme String
en raison du côté gauche de l'affectation . Toutefois, si vous préférez ne pas avoir cette inférence, vous pouvez définir explicitement en procédant comme suit:
List<User> users = Collections.<User>emptyList();
Dans ce cas particulier, cela peut apparaître comme redondant à la plupart des gens (en fait, je l'ai vu très peu de code dans la nature qui utilise des arguments de type explicites), mais pour une méthode avec la signature: void doStuff(List<String> users)
il serait parfaitement propre pour un à invoquer doStuff()
avec un argument de type explicite comme suit:
doStuff(Collections.<String>emptyList());
chaque fois que vous écrivez un argument de type explicite dans une méthode, dieu tue un chaton (je pense que c'était josh bloch qui a dit ça) –