【问题标题】:Rectangle and Rectangle2D DifferenceRectangle 和 Rectangle2D 的区别
【发布时间】:2010-02-06 19:44:49
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 这是一个遗留问题。 Rectangle2D 是在比 Rectangle 更高版本的 Java 中添加的,结果是 Sun 笨拙地尝试解决它。​​

标签: java


【解决方案1】:

矩形使用 int 坐标。 Rectangle2D 是一个抽象类,不管您使用的是 int、double 还是 float 坐标。

如果您需要更高精度的 double 和 float,则必须使用 Rectangle2D。

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

Rectangle2D rect = new Rectangle2D.Double(double, double, double, double);

Rectangle2D rect = new Rectangle(int, int, int, int)

如果你知道你只会处理整数,你可以一直使用 Rectangle。

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 2013-08-07
      • 2011-10-20
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多