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?)
Tags und Links java javac overloading