Java genéricos tipo borrado de parámetros de método
Conseguí este de una charla de rompecabezas de Google I / O dada por Joshua Bloch. Aquí está el código
public class Glommer<T> {
String glom(Collection<?> obj){
String result = "";
for(Object o : obj){
result += o;
}
return result;
}
int glom(List<Integer> ints){
int result = 0;
for(int i : ints){
result += i;
}
return result;
}
public static void main(String args[]){
List<String> strings = Arrays.asList("1", "2", "3");
System.out.println(new Glommer().glom(strings));
}
Este método principal lanza una excepción porquenew Glommer
es un tipo crudo y por lo tanto todos los genéricos enGlommer
Se borra, por lo que termina llamando.int glom(List<Integer> ints)
más bien queString glom(Collection<?> obj)
.
Mi pregunta es, incluso si llamoglom()
comonew Glommer<Integer>().glom(strings)
¿No debería llamar alint glom(List<Integer> ints)
método ya que debido al borrado de tipo, este método es efectivamenteint glom(List ints)
ystrings
es de tipoList
noCollection
?