目前,我使用Rectangle和Rectangle2D(Rectangle2D.Double)交换。
我想知道在选择正确的数据类型时我会考虑什么?我没有看到任何明显的区别,除了Rectangle(Rectangle2D的子类)有更多的API函数。
感谢。
答案 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()。