2010-02-06 117 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()。