Die folgende Methode kompiliert nicht:Java-Generika - <K erstreckt sich Mitte> - ist K ein echtes Kind von Middle?
public <K extends Middle> K test(K a, K b) {
return a.test(); //a.test() returns Middle
}
Wenn wir K
als Subtyp von Middle
gesetzt, dann Middle
der Lage sein sollte zurückgegeben werden, nicht wahr?
Wenn ich wie folgt vor: return (K)a.test();
, es kompiliert ...
Ich verstehe immer noch nicht, a.test() wird immer Middle zurückgeben. – hrs
@hrs: Und Ihre Methode wird deklariert, um ein 'K' zurückzugeben, nicht ein' Middle'. Nicht alle Middles sind Ks, also ist das nicht sicher. –
oooh, richtig. Offensichtlich jetzt. Danke, das war sehr hilfreich. – hrs