Hallo,
ich habe da ein großes Problem und auch die Suche in diesem Forum bzw Google haben mir nicht geholfen.
Also ich habe folgende Klassen:
Diese Klassen darf ich nicht verändern, auch nichts an den Generics dort, soviel sei vorweg gesagt.
Ich möchte jetzt von außen eine Variable vom Typ ShapeGroup erstellen, allerdings weiss ich zur Entwurfszeit ja noch nicht, ob ShapeGroup vom Typ Shape, Circle oder Rectangle ist, also hab ich mir gedacht benutz ich Wildcards:
soweit sogut, aber wenn ich dann mit "shpGrp.addShape(new Circle(5))" was hinzufügen möchte, erwartet er für die Funktion ein NULL-Objekt weil er nicht erkennt, dass ich dort Circles adden will.
Genauso muss es natürlich auch möglich sein über "shpGrp.getShape(0).getRadius" den Radius zu bekommen.
Wie kann ich dieses Problem beheben, ohne das mir Eclipse Warnings ausgibt und es natürlich syntaktisch richtig ist?
ich bedanke mich schonmal vorweg für eure Antworten.
PS.
Das obige Beispiel ist schnell dahingeschmiert worden, um mein Problem zu verdeutlichen, also über Sinn und Unsinn brauch hier nicht diskutiert werden
mfg
TheSource
ich habe da ein großes Problem und auch die Suche in diesem Forum bzw Google haben mir nicht geholfen.
Also ich habe folgende Klassen:
Code:
public class ShapeGroup<TShape extends Shape> {
...
public void addShape(TShape shape) {
...
}
}
public class Shape {
public int color;
...
}
public class Circle extends Shape {
public int radius;
...
}
public class Rectangle extends Shape {
public int lengthX;
public int lengthY;
...
}
Diese Klassen darf ich nicht verändern, auch nichts an den Generics dort, soviel sei vorweg gesagt.
Ich möchte jetzt von außen eine Variable vom Typ ShapeGroup erstellen, allerdings weiss ich zur Entwurfszeit ja noch nicht, ob ShapeGroup vom Typ Shape, Circle oder Rectangle ist, also hab ich mir gedacht benutz ich Wildcards:
Code:
ShapeGroup<?> shpGrp;
shpGrp = new ShapeGroup<Circle>();
soweit sogut, aber wenn ich dann mit "shpGrp.addShape(new Circle(5))" was hinzufügen möchte, erwartet er für die Funktion ein NULL-Objekt weil er nicht erkennt, dass ich dort Circles adden will.
Genauso muss es natürlich auch möglich sein über "shpGrp.getShape(0).getRadius" den Radius zu bekommen.
Wie kann ich dieses Problem beheben, ohne das mir Eclipse Warnings ausgibt und es natürlich syntaktisch richtig ist?
ich bedanke mich schonmal vorweg für eure Antworten.
PS.
Das obige Beispiel ist schnell dahingeschmiert worden, um mein Problem zu verdeutlichen, also über Sinn und Unsinn brauch hier nicht diskutiert werden
mfg
TheSource