Ich habe alle Informationen gelesen, kann aber immer noch nicht den Grund finden, warum in diesem grundlegenden Beispiel das Überschreiben nicht möglich ist. Bitte erkläre.Das einfachste Beispiel für das Überschreiben von Methoden mit Generics
class Fruit{}
class Apple extends Fruit{}
class Parent {
public Set<Fruit> getIt(){
return null;
}
}
class Child extends Parent {
@Override // THIS DOESN'T WORK
public Set<Apple> getIt(){
return null;
}
}
Nur um es zu vervollständigen. Die Arrays sind Co-Varianten. Also sollte dieser Code gut funktionieren.\t \t Klasse Fruit {} \t \t Klasse Apfelfrucht {} \t \t Klasse Eltern { \t \t öffentlichen Obst [] getIT() { \t \t \t return null erstreckt; \t \t} \t \t} \t \t Klasse Child erstreckt Eltern { \t \t @Override // DIESE \t \t öffentlich von Apple [] getIT() ARBEITET { \t \t \t return null; \t \t} \t \t} – Veeram
Sicher. Natürlich wird jeder Versuch, den Typ in der Array-Kovarianz zu verletzen, eine Ausnahme auslösen. Die Art der Array-Kovarianz wird zur Laufzeit erzwungen. –