Java 矩形类函数getX()、getY()等以双精度返回
根据我的经验和Oracle Java API文档,我知道他们是这样做的,但我想知道为什么。 通过构造函数,我只允许将Java 矩形类函数getX()、getY()等以双精度返回,java,rectangles,Java,Rectangles,根据我的经验和Oracle Java API文档,我知道他们是这样做的,但我想知道为什么。 通过构造函数,我只允许将int类型参数传递给Rectangle类,x、y等的内部数据表示形式为int类型,并且setSize()仅排除int类型的参数。 但是为什么像getX(),getY(),getWidth()等所有方法在没有任何精度时都返回一个double?为什么不像预期的那样简单ints 编辑: 我确实理解它是从Rectangle2D类派生出来的,但这仍然不是简单地不提供任何基于int的getX(
int
类型参数传递给Rectangle
类,x、y等的内部数据表示形式为int
类型,并且setSize()
仅排除int
类型的参数。
但是为什么像getX()
,getY()
,getWidth()
等所有方法在没有任何精度时都返回一个double?为什么不像预期的那样简单int
s
编辑:
我确实理解它是从
Rectangle2D
类派生出来的,但这仍然不是简单地不提供任何基于int
的getX()
和getY()
函数的理由,因为与Point2D
类和Point2D
不同的是,这些方法不是抽象的。另外,setLocation()
也不是抽象的。我相信,因为它扩展了中使用的,它说:
此类只是存储二维矩形的所有对象的抽象超类坐标的实际存储表示形式留给子类。
因此,如果它的任何子类表示double
中的维度,那么可能应该彼此兼容。如果您阅读Javadoc了解:
以双精度返回边界矩形的X坐标
指定人:
课堂上呈矩形
我想他们把它们当作伪装:
如果某些API需要x或y坐标的
int
版本,则可以分别直接使用recObject.x或recObject.y。如果某些API需要x或y坐标的
double
版本,那么它可以使用getX()和getY(),但是getX()、getY()、getWidth()方法不是从Rectangle2D继承的。那么,为什么它们的返回类型是double呢?啊,当然,它们是在RectangularShape
类中指定的。Thansk很多,我想知道这个问题已经有一段时间了。在Java中直接使用类字段而不是通过getter/setter,这难道不被认为是一种糟糕的做法吗?@Jori:因为这是一个相当古老的API。编写它的程序员可能不会调查这件事。为了向后兼容,sun java不能将变量访问修饰符更改为private。