根据我的经验和Oracle Java API文档,我知道他们确实这样做了,但我想知道为什么。
通过构造函数,我只允许将int
类型参数传递给Rectangle
类,x,y等的内部数据表示形式为int
,还有{{ 1}}只排除setSize()
类型的参数。
但是,为什么像int
,getX()
,getY()
等所有方法都会在没有任何精度的情况下返回double?为什么不按预期简单getWidth()
?
编辑:
我确实理解它来自int
类,但仍然没有理由只提供任何基于Rectangle2D
的{{1}}和int
函数,如与getX()
和getY()
类的差异这些方法不是抽象的。 Point
也不是抽象的。
答案 0 :(得分:3)
我相信,因为它扩展了Rectangle2D中使用的Graphics2D,它说:
此类只是存储2D矩形的所有对象的抽象超类。 坐标的实际存储表示留给子类。
因此,如果它的任何子类表示double
中的维度,那么它们之间的维度应该相互兼容。如果您阅读Rectangle#getX()的Javadoc:
以double精度返回边界Rectangle的X坐标。
指定者:
RectangularShape类中的
答案 1 :(得分:0)
我认为他们把它们放在一边使用:
如果某些API需要int
版本的x或y坐标,那么它可以分别直接使用recObject.x或recObject.y。
如果某些API需要double
版本的x或y坐标,那么它可以使用getX()和getY()