Löschen von Methodenparametern durch generische Java-Typen

Ich habe diesen aus einem Google I / O-Puzzler-Vortrag von Joshua Bloch erhalten. Hier ist der Code

 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));
      }

Diese Hauptmethode löst eine Ausnahme aus, weilnew Glommer ist ein roher Typ und daher alle Generika inGlommer gelöscht wird, so dass es aufruftint glom(List<Integer> ints) eher, alsString glom(Collection<?> obj).

Meine Frage ist, auch wenn ich angerufen habeglom() wienew Glommer<Integer>().glom(strings) sollte es das nicht nennenint glom(List<Integer> ints) Verfahren, da aufgrund der Typlöschung dieses Verfahren effektiv istint glom(List ints) undstrings ist vom TypList nichtCollection?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage