8

根据我的经验和 Oracle Java API 文档,我知道他们会这样做,但我想知道为什么。通过构造函数,我只允许将int类型参数传递给Rectangle类,x、y 等的内部数据表示是 type 的int,也setSize()只能排除 type 的参数int。但是,为什么在没有任何精度的情况下,所有方法(如getX(), getY(),等)都返回双精度值?getWidth()为什么不像int预期的那样简单?

编辑:我确实理解它是从Rectangle2D类派生的,但这仍然没有理由简单地不提供任何int基于- 的getX()andgetY()函数,因为与PointandPoint2D类不同,这些方法不是抽象的。也不setLocation()是抽象的。

4

2 回答 2

3

我相信因为它扩展了Graphics2D中使用的Rectangle2D,它说:

这个类只是所有存储二维矩形的对象的抽象超类。坐标的实际存储表示留给子类。

因此,如果它的任何子类表示其中的维度double应该彼此兼容,也许。如果您阅读Rectangle#getX()的 Javadoc :

以双精度返回边界 Rectangle 的 X 坐标。

指定者:

类 RectangularShape 中的public abstract double getX()

于 2013-07-01T09:23:23.013 回答
0

我认为他们把它们放在这里是为了:
如果某些 API 需要intx 或 y 坐标的版本,那么它可以分别直接使用 recObject.x 或 recObject.y。
如果某些 API 需要doublex 或 y 坐标的版本,那么它可以使用 getX() 和 getY()

于 2013-07-01T09:26:27.310 回答