Rectangle和Rectangle2D的区别

Che*_*eng 15 java

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

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

谢谢.

ama*_*ion 13

Rectangle使用int坐标.Rectangle2D是一个抽象类,如果您使用int,double或float坐标,则不关心它.

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

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

Rectangle2D rect = new Rectangle2D.Double(double, double, double, double);
Run Code Online (Sandbox Code Playgroud)

要么

Rectangle2D rect = new Rectangle(int, int, int, int)
Run Code Online (Sandbox Code Playgroud)

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

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

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


neo*_*und 7

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