Generics und Casting eines Objekts

Bitte aktiviere JavaScript!
Hey,
warum muss hier gecastet werden?
Java:
class Mannschaft<T extends Spieler>{
    Collection<T> player = new ArrayList();
   
    void aufnehmen(Spieler spieler) {
     this.player.add((T)spieler); //hier
}
}
Wir schränken doch zuvor den generischen Bereich auf alles unter Spieler ist ein.
Deswegen wird doch das T intern durch einen Spieler ersetzt.
Ich verstehe einfach den Cast Grund nicht.
 
A

Anzeige


Vielleicht hilft dir dieser Kurs hier weiter: (hier klicken)
Wir schränken doch zuvor den generischen Bereich auf alles unter Spieler ist ein.
Du schränkst es auf eine bestimmte Klasse unter Spieler ein, nicht auf alles unter Spieler. Jedes T muss ein Spieler sein, aber nicht jeder Spieler muss ein T sein.


Stell dir vor, es gibt zwei Unterklassen von Spieler: HandballSpieler und FußballSpieler.
Mannschaft kannst du dann als Mannschaft<HandballSpieler> deklarieren, T wäre dann HandballSpieler.

Daran siehst du auch, dass das casten an der Stelle fehlerhaft ist (auch wenn es nicht zwingend einen Compilezeit- oder Laufzeitfehler wirft): Deiner HandballMannschaft kannst du damit FußballSpieler hinzufügen.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben