2016-04-20 19 views
1

Ich habe ein Problem mit meinem Code. Ich möchte ein Programm schreiben, das Rectangle, Circle und eine weitere Form aus Punkten erstellt. Ich möchte Graphics2D verwenden und hier ist meine Frage: Wie man eine ArrayList von all diesen Formen macht? Ist es überhaupt möglich? Ich habe etw wie folgt aus:
ArrayList von Formen

List<Shape> shapesArray = new ArrayList<Shape>(); 
shapesArray.add(new Rectangle2D.Double()); 
shapesArray.get(0).setFrameFromDiagonal(point_a, point_b) 


Wenn ich es so tun, kann ich nicht Rectangle2D Methoden.

Vielen Dank für Hilfe

Antwort

0

Sie können dies sicher tun:

List<Shape> shapesArray = new ArrayList<Shape>(); 
shapesArray.add(new Rectangle2D.Double()); 
shapesArray.get(0).setFrameFromDiagonal(point_a, point_b) 

aber bestimmte Klasse Methoden aufrufen ein gegossenes erforderlich ist ... sicher sein, wenn eine Form in der Liste sein kann werfen Sie die Instanz

wie überprüfen müssen:

if(shapesArray.get(0) instanceof Rectangle2D){ 
     ((Rectangle2D)shapesArray.get(0)).setFrameFromDiagonal(point_a, point_b) 
} 
+0

Vielen Dank, das ist, was ich tun wollte. Funktioniert jetzt perfekt: D – StinkyB

+0

Sie sind herzlich willkommen ... :) –

0

Ja, das kannst du tun. Das einzige, was Ihnen fehlt, ist ein Check und eine Umwandlung in das ursprüngliche Objekt, bevor Sie es verwenden können. Hier ist ein Code:

if(shapesArray.get(0) instanceof Rectangle2D) 
Rectangle2D rectangle = (Rectangle2D) shapesArray.get(0); 
// Use methods and do other checks