Ich habe Kurse in fortgeschrittener Programmierung an meiner Universität und ich habe ein wenig Probleme zu verstehen, wie dieser Code funktioniert.Fortgeschrittener Polymorphismus in Java
public final class GenericClass<T> {
private void overloadedMethod(Collection<?> o) {
System.out.println("Collection<?>");
}
private void overloadedMethod(List<Number> o) {
System.out.println("List<Number>");
}
private void overloadedMethod(ArrayList<Integer> o) {
System.out.println("ArrayList<Integer>");
}
public void method(List<T> l) {
overloadedMethod(l);
}
public static void main(String[] args) {
GenericClass<Integer> test = new GenericClass<Integer>();
test.method(new ArrayList<Integer>());
}
}
Warum funktioniert dieser Code drucken "Collection <? >"?
dank ist, Ihre Antwort erklärt auch, warum nach dem Wechsel 'overloadedMethod (List o)' auf 'overloadedMethod (List > o)' Programm druckt 'Liste ' statt 'Sammlung >' –
die Das Wichtigste ist dein letzter Satz. Das erklärt alles! –
Ziemlich gute Antwort, aber -1, um Ihre Aufmerksamkeit auf die Tatsache zu lenken, dass die Deklaration von 'GenericClass' stattdessen zum selben Aufruf von 'overloadedMethod (Collection >) führt'. Da ist also noch etwas anderes los. –