Hallo
ich lerne gerade die schöne Welt von Generics kennen und löse dazu ein paar Beispielaufgaben.
Nun hab ich folgendes gegeben:
eine falsche Implementation davon wäre:
da shapes ja eine List of Circle sein kann. Soweit so klar. Um dies zu umgehen muss die bounded wildcard spezifischer deklariert werden, wie wir wiefolgt darlegen:
es ist nun also typensicher. Aber wieso? super Rectangle ist ja wiederum Shape?
wieso sagen wir nicht:
?
Danke für jeglichen Gedankenanstoss!
grüsse 223
ich lerne gerade die schöne Welt von Generics kennen und löse dazu ein paar Beispielaufgaben.
Nun hab ich folgendes gegeben:
Java:
abstract class Shape {
public abstract void draw();
}
class Circle extends Shape {
public void draw() {};
}
class Rectangle extends Shape {
public void draw() {}
}
eine falsche Implementation davon wäre:
Java:
public void addRectangle (List<? extends Shape> shapes) {
shapes.add (new Rectangle());
}
da shapes ja eine List of Circle sein kann. Soweit so klar. Um dies zu umgehen muss die bounded wildcard spezifischer deklariert werden, wie wir wiefolgt darlegen:
Java:
public void addRectangle (List<? super Rectangle> shapes) {
shapes.add (new Rectangle());
}
es ist nun also typensicher. Aber wieso? super Rectangle ist ja wiederum Shape?
wieso sagen wir nicht:
Java:
public void addRectangle (List<Rectangle> shapes) {
shapes.add (new Rectangle());
}
?
Danke für jeglichen Gedankenanstoss!
grüsse 223
Zuletzt bearbeitet von einem Moderator: