Rectangle和Rectangle2D的区别

时间:2010-02-06 19:44:50

标签: java

目前,我使用Rectangle和Rectangle2D(Rectangle2D.Double)交换。

我想知道在选择正确的数据类型时我会考虑什么?我没有看到任何明显的区别,除了Rectangle(Rectangle2D的子类)有更多的API函数。

感谢。

2 个答案:

答案 0 :(得分:13)

Rectangle使用int坐标。 Rectangle2D是一个抽象类,如果您使用的是int,double或float坐标,则无需关心。

如果你需要更高的double和float精度,你必须使用Rectangle2D。

Rectangle2D是基类,所以如果您正在编写以抽象方式对矩形形状进行操作的代码,请转到Rectangle2D,然后像这样分配:

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

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

如果你知道你只打算处理整数,你可以一直使用矩形。

你可能会说Rectangle应该被称为Rectangle2D.Integer。但那也不是,因为例如Rectangle是实现可序列化接口的三个中唯一的一个。

像skaffman评论的那样,这是一个遗留问题。

答案 1 :(得分:4)

类Rectangle扩展Rectangle2D, 这意味着您始终可以将Rectangle转换为Rectangle2D, 但相反,你可以使用Rectangle2D.getBounds()。