8

私の経験とOracle Java APIのドキュメントによると、そうしていることはわかっていますが、その理由は不思議です。コンストラクターを介して、int型引数のみをRectangleクラスに渡すことができます。x、y などの内部データ表現は型intでありsetSize()、 type の引数のみを除きますintgetX()しかし、getY()、 、 などのすべてのメソッドがgetWidth()、精度がない場合に double を返すのはなぜですか? 期待どおり単純なints ではないのはなぜですか?

編集: クラスから派生していることは理解していますが、 andクラスとは異なり、これらのメソッドは抽象的ではないため、ベースの and関数をRectangle2D単純に提供しない理由にはなりません。また、抽象的でもありません。intgetX()getY()PointPoint2DsetLocation()

4

2 に答える 2

3

Graphics2Dで使用されるRectangle2Dを拡張し、次のように述べているためだと思います。

このクラスは、2D 四角形を格納するすべてのオブジェクトの抽象スーパークラスにすぎません。座標の実際のストレージ表現は、サブクラスに任されています。

したがって、そのサブクラスのいずれかが次元を表している場合double、おそらく相互に互換性があるはずです。Rectangle#getX()の Javadoc を読んだ場合:

境界 Rectangle の X 座標を倍精度で返します。

指定者:

クラス RectangularShape のパブリック抽象 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 に答える