gpt4 book ai didi

java - equals() 没有给出预期结果

转载 作者:行者123 更新时间:2023-12-02 01:58:06 24 4
gpt4 key购买 nike

我正在开发一个小项目,其中有国家、人口和大陆类。

Population 类和 Continent 类都使用枚举来定义可能的值。在国家/地区的哪个地方,我想使用“工厂方法”来创建新的国家/地区。代码如下:

public enum Continent {
EUROPE,
ASIA,
AMERICA;
}

public enum Population {
LOW(1000000),
AVERAGE(2000000),
HIGH(5000000);
}

public class Country{

private Continent=null;
private Population=null;

Country(Continent continent, Population population){
this.continent=continent;
this.population=population;
}

好吧,我的问题是我尝试重写 equals() 函数,但它没有给我预期的结果。

public boolean equals(Country other){  
if(this.population == other.population && this.continent==other.continent)
return true;
else
return false;
}

但是断言测试给了我以下结果

java.lang.AssertionError: [new Country(Europe,HIGH)] Expecting:
<"Romania (Country@464a7b61)"> to be equal to: <"Romania (Country@488d8dd8)">
but was not.

我在网上查了一下,我发现当给出相同的参数时,它应该知道它是相同的,例如相同的参数不应该有两个不同的对象。我确信我是否理解正确,但它似乎是相关的。

我仍然不知道是否是这种情况以及如何处理它。有想法吗?

更新:
出现一些建议后,我尝试将 equals 函数更改为

public boolean equals(Country other){  
if(this.population.equals(other.population) && this.continent.equals(other.continent))
return true;
else
return false;
}

更新2:

public boolean equals(Object o){  
if(this.population.equals(o.population) && this.continent.equals(o.continent))
return true;
else
return false;
}

它不允许我做.population.大陆

最佳答案

您的 equals() 方法签名错误

它应该是:

  @Override
public boolean equals(Object o) {

注意Object o而不是Country

关于java - equals() 没有给出预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52038178/

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