Rechteck verwendet int-Koordinaten. Rectangle2D ist eine abstrakte Klasse, die es nicht interessiert, ob Sie int, double oder float Koordinaten verwenden.
Wenn Sie die größere Genauigkeit von Doppel-und Float benötigen, müssen Sie mit Rectangle2D gehen.
Rectangle2D ist die Basisklasse, also wenn Sie Code schreiben, die in abstrakter Weise auf rechteckigen Formen arbeitet, gehen Sie für Rectangle2D, und weisen Sie es wie folgt:
Rectangle2D rect = new Rectangle2D.Double(double, double, double, double);
oder
Rectangle2D rect = new Rectangle(int, int, int, int)
Wenn Sie wissen, dass Sie nur mit Ints arbeiten, können Sie Rectangle den ganzen Weg verwenden.
Sie könnten sagen, dass Rectangle Rectangle2D.Integer aufgerufen werden sollte. Aber das ist es auch nicht, weil z.B. Rectangle ist das einzige der drei, das die serialisierbare Schnittstelle implementiert.
Wie skaffman kommentierte, ist es ein bisschen ein Erbe-Problem.
Es ist eine Vermächtnis Sache. 'Rectangle2D' wurde in einer späteren Version von Java als' Rectangle' hinzugefügt, und das Ergebnis ist Suns harscher Versuch, es zu lösen. – skaffman