gpt4 book ai didi

java - 需要基本的 java equals() override 帮助

转载 作者:行者123 更新时间:2023-11-29 08:10:49 25 4
gpt4 key购买 nike

我目前正在用 java 编写一个简单的行程序。不会有实际的 GUI,因此它完全基于文本。

我们需要有一个点类和一个包含点对象的线类。

我遇到的问题涉及我的点类的 equals 方法。考虑到每个点只有两个正整数值,一个 x 和一个 y,我在这里遇到了问题,我担心当我必须比较线时会遇到问题,这将涉及比较点、int 宽度和字符串颜色。

这就是我的点类的 equals 方法的代码。

@Override
public boolean equals(Point that) {
if(this==that)
return true;
//if
if(this.x==that.getX() && this.y==that.getY())
return true;
return false;
}

我们将不胜感激。

最佳答案

签名需要包含Object,而不是Point。然后您需要进行明显的检查以确保该对象实际上是一个点并且它是非空的。

除此之外,正如您所说的那样,我认为该方法没有任何问题,据我所知,它是自反的、对称的、一致的和可传递的。如果你的类(class)使用 double ,那么我会说在比较它们时放入一个增量值 - 但显然对于整数这不是问题。

间接的问题是你真的应该重写 hashcode 以及以相同的方式运行,否则在将你的点添加到使用 hashcode() 的集合时你可能会遇到奇怪的问题(根据契约(Contract),他们应该以相同的方式比较对象。)

关于java - 需要基本的 java equals() override 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8242791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com