Entschuldigung, wenn die Frage verwirrend ist. Hier ein Beispiel:Wie überprüft man, zu welcher Kindklasse eine Variable in einer ArrayList mit 2 Kindtypen von 1 Elternteil gehört?
Es gibt eine ArrayList, die Daten vom Typ "Shape" enthält.
"Circle" und "Triangle" sind beide Kinder von "Shape". Der Kreis hat die Methode calculateRadius(). Dreieck nicht und kann nicht.
Ich möchte durch alle Formen in der Arraylist suchen und den Suchradius überprüfen:
for(Shape s : shapeList)
{
System.out.println(s.calculateRadius);
}
Ich verstehe, das wird nicht funktionieren, da weder Form noch Dreieck diese Methode hat. Gibt es eine Möglichkeit, zu überprüfen, ob die Form in der Liste ein Kreis oder ein Dreieck ist, und dann den Radius zu berechnen, wenn die Form ein Kreis ist?
Wie Liste definiert wurde und Daten hinzugefügt wurde:
ArrayList<shape> shapeList = new ArrayList<shape>;
...
Circle c = new Circle(a, b, c, radius);
Triangle t = new Triangle(a, b, c, type);
shapeList.add(c);
shapeList.add(t);
Sie * könnten * lösen dies mit instanceof, aber das wäre ein hässlicher Klud. Es ist besser, wenn Sie das Entwurfsmuster "Besucher" verwenden können. –