2010-02-06 105 views
13

目前,我使用矩形和矩形2D(Rectangle2D.Double)交換。矩形和矩形2D差異

我想知道在選擇正確的數據類型時,我會考慮什麼?除了Rectangle(Rectangle2D的子類)有更多的API函數外,我沒有看到任何明顯的區別。

謝謝。

+5

這是一件遺留的事情。 'Rectangle2D'被添加到比'Rectangle'更高版本的Java中,結果是Sun公司試圖解決它。 – skaffman 2010-02-06 19:47:34

回答

11

矩形使用int座標。 Rectangle2D是一個抽象類,不關心你是否使用int,double或float座標。

如果您需要double和float的更高精度,則必須使用Rectangle2D。

矩形的基類,所以如果你正在寫在一個抽象的方式長方形運行的代碼,去爲矩形,並指定像這樣:

Rectangle2D rect = new Rectangle2D.Double(double, double, double, double); 

Rectangle2D rect = new Rectangle(int, int, int, int) 

如果你知道你只是要處理整數,你可以一直使用矩形。

你可能會說Rectangle應該叫做Rectangle2D.Integer。但是這也不完全是因爲例如Rectangle是實現可序列化接口的三個中唯一的一個。

就像skaffman評論的那樣,這有點遺留問題。

3

class Rectangle extends Rectangle2D, 這意味着您始終可以將Rectangle轉換爲Rectangle2D, ,但相反,您可以使用Rectangle2D.getBounds()。