gpt4 book ai didi

java - 如何使用 boolean equals(object o) 方法并调用该方法所应用的对象?

转载 作者:行者123 更新时间:2023-12-01 23:29:41 24 4
gpt4 key购买 nike

这就是我目前的方法:

//this method should check if the pokemon are equal//

public boolean equals(Pokemon other){
boolean equality;
if (**XXXXX** == other)
equality = true;
else
equality = false;
return equality;


}

所以这应该比较两个对象,但我的问题是如何调用该方法所应用的对象?例如,主代码应该将这个 equals 方法应用于 Pokemon a,如下所示:

 if (a.equals(other))
System.out.println("Pokemon are equal!");

如何在我的方法中输入或调用“a”(该方法所应用的对象),以便比较它们是否相等?因为当我将代码中的 XXXXX 替换为如下所示:

 if (Pokemon == other)
equality = true;

我收到错误:

Pokemon.java:130: error: cannot find symbol
if ( Pokemon == other)
^
symbol: variable Pokemon
location: class Pokemon

最佳答案

由于您在对象 a 上调用 .equals(),因此该方法以 a 作为其上下文执行,这意味着 this 关键字将引用该方法内部的 a,就像在任何其他对象上调用的任何其他方法一样。

此外,请小心使用 ==。这将查看两个引用是否引用内存中的同一个对象。这不太可能只是您想要的。更有可能的是,您需要检查两个 Pokemon 对象上的各种成员变量,看看这些变量是否相等,然后如果它们返回 true 来指示这两个 Pokemon 对象确实是平等的。您选择的变量取决于您和您使两个神奇宝贝“平等”的标准。

通常,在 .equals() 实现的开头实际上会有一个 == 检查,因为如果它为 true,那么该方法可以立即返回 true因为引用引用的是内存中完全相同的对象。如果 == 为 false,那么您可以继续检查成员变量或用于计算相等性的任何其他标准。

另请注意,您通过为参数签名提供 Pokemon 类型的引用而不是类型来重载 .equals() 方法。 对象。如果您想真正覆盖基本Object.equals()方法,您需要这样做:

public boolean equals(Object other) {
// Comparisons
}

如果您想使用特定的方法和成员变量,则需要将 other 转换为 Pokemon 对象(并使用 instanceof)到 Pokemon 类。如果您希望其他 JDK(甚至您自己的)代码使用 .equals() 来调用您的自定义 .equals() 方法,而不是基本方法,则需要此覆盖Object.equals() 一。

关于java - 如何使用 boolean equals(object o) 方法并调用该方法所应用的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19526965/

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