我读过这篇文章:如何用Java编写平等方法。
基本上,它为支持继承的equals()方法提供了一种解决方案:
Point2D twoD = new Point2D(10, 20);
Point3D threeD = new Point3D(10, 20, 50);
twoD.equals(threeD); // true
threeD.equals(twoD); // true
但这是个好主意吗?这两个实例看起来是相等的,但可能具有两个不同的哈希码。是不是有点不对劲?
我相信这可以通过改用操作数来更好地实现。
z
坐标对于某些应用程序可能是一个有用的约定(考虑到处理早期数据的早期CAD系统)。但这是一个任意约定。具有3个或更多维度的空间中的平面可以具有任意方向...这就是使有趣的问题变得有趣的原因。