为什么没有Line2D.equals覆盖?

时间:2015-02-25 18:10:33

标签: java

new Line2D.Double(0,0,1,1).equals(new Line2D.Double(0,0,1,1)) // false

为什么平台设计人员选择不在Line2D上覆盖.equals,但是在Point2D上覆盖了它?

2 个答案:

答案 0 :(得分:3)

为什么班上的设计师选择不重写等于的答案只能由他们来回答。

但我会提出我的想法:没有什么特别说明两条线同一条线只是因为它们有相同的端点。

考虑一个显示一堆随机线条的程序。如果其中两个碰巧重叠,它们应该相等吗?如果我使用Set来跟踪这些行,我是否应该无法添加与现有行重叠的另一行?

你或许可以争辩一个答案,但我可以反驳 - 这就是为什么他们让我们自己决定。

答案 1 :(得分:3)

我们只能推测。两个可能的原因:

  1. 由于值不准确,浮点相等检查很少有用。
  2. 这会产生什么样的结果?

    new Line2D.Double(0,0,1,1).equals(new Line2D.Double(1,1,0,0))
    

    他们看起来相同,但 他们是否相同?完全没有覆盖.equals()可以避免争议。