Überlastung der Java-Methode - Mehrdeutigkeit

8

Während ich einige Läufe zum Testen von Code in diesem Thread durchführte, fand ich eine seltsame Sache, wenn Sie das folgende Programm betrachten

%Vor%

Ich hatte erwartet, dass der Java-Compiler aufgrund der Byte-Code Erasure-Eigenschaft Ambiguity Error anzeigt, aber das tat er nicht. Als ich nun versuchte, diesen Code auszuführen, erwartete ich, dass test1(List) aufgerufen wird und die Ausgabe "abc" ist, aber zu meinem Erstaunen hieß es test1(List<Integer>) (Ausgabe war 1 )

Ich habe sogar versucht wie unten

%Vor%

Aber immer noch Java, der test1(List<Integer> param) method aufruft, und wenn ich das param inspiziert hatte, hatte es String "a" (wie hat Java List<String> auf List<Integer> umgesetzt?)

    
sanbhat 04.05.2013, 19:59
quelle

1 Antwort

4

Dies ist ein behobener Fehler. Ссылка

Es sieht so aus, als ob dieser Fehler in javac5, javac6 und ecj für Eclipse 3.7 vorhanden war, aber in Eclipse 3.8 und höher behoben wurde.

    
durron597 04.05.2013, 20:55
quelle

Tags und Links