Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用boolean equals(object o)方法并调用应用该方法的对象?_Java_Object_Methods_Boolean_Equals - Fatal编程技术网

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

Java 如何使用boolean equals(object o)方法并调用应用该方法的对象?,java,object,methods,boolean,equals,Java,Object,Methods,Boolean,Equals,这就是我目前的方法: //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; } if (a.equals(other

这就是我目前的方法:

//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;


   }
 if (a.equals(other))
     System.out.println("Pokemon are equal!");
所以这应该是比较两个对象,但我的问题是如何调用方法应用到的对象?例如,主代码应将此equals方法应用于口袋妖怪a,如下所示:

//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;


   }
 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()
实现的开头实际上会有一个
=
检查,因为如果它为真,那么该方法可以立即返回真,因为引用引用的是内存中完全相同的对象。如果
==
为false,则可以继续检查成员变量或计算相等性的任何其他标准

还请注意,您正在重载
.equals()
方法,方法是为其参数签名提供
Pokemon
类型的引用,而不是
对象类型的引用。如果要真正重写base
Object.equals()
方法,需要执行以下操作:

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

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

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

另外,使用
=
时要小心。这将查看两个引用是否引用了内存中的同一个对象。这不太可能仅仅是你想要的。更可能的情况是,您需要检查两个Pokemon对象上的各种成员变量,以查看这些变量是否相等,然后检查它们是否返回
true
,以指示两个Pokemon对象确实相等。你选择的变量取决于你和你的标准,是什么让两个口袋妖怪“相等”

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

还请注意,您正在重载
.equals()
方法,方法是为其参数签名提供
Pokemon
类型的引用,而不是
对象类型的引用。如果要真正重写base
Object.equals()
方法,需要执行以下操作:

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

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

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

另外,使用
=
时要小心。这将查看两个引用是否引用了内存中的同一个对象。这不太可能仅仅是你想要的。更可能的情况是,您需要检查两个Pokemon对象上的各种成员变量,以查看这些变量是否相等,然后检查它们是否返回
true
,以指示两个Pokemon对象确实相等。你选择的变量取决于你和你的标准,是什么让两个口袋妖怪“相等”

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

还请注意,您正在重载
.equals()
方法,方法是为其参数签名提供
Pokemon
类型的引用,而不是
对象类型的引用。如果您想真正覆盖基
对象。equals()<