Java 使用boolean equals()方法使同一类的两个对象相等
有点奇怪 实际上,我已经通过查看示例和修改代码来回答了一个问题,但我并不完全理解它是如何工作的 任何解释都将不胜感激 代码: 我有一个名为Player的类,在main方法的另一个类中创建了3个对象Java 使用boolean equals()方法使同一类的两个对象相等,java,boolean,return,equals,Java,Boolean,Return,Equals,有点奇怪 实际上,我已经通过查看示例和修改代码来回答了一个问题,但我并不完全理解它是如何工作的 任何解释都将不胜感激 代码: 我有一个名为Player的类,在main方法的另一个类中创建了3个对象 public boolean equals(Object obj) { if (this == obj) { return true; } else if (obj instanceof Player) { Player player = (Play
public boolean equals(Object obj) {
if (this == obj) {
return true;
} else if (obj instanceof Player) {
Player player = (Player) obj;
if (player.getName().equals(this.getName())) {
return true;
} else {
return false;
}
} else {
return false;
}
}
检查评论
public boolean equals(Object obj) {
if (this == obj) { // if the references are the same, they must be equal
return true;
} else if (obj instanceof Player) {
Player player = (Player) obj; // we cast the reference
if (player.getName().equals(this.getName())) { // we compare the name
return true; // they are equal if names are equal
} else {
return false; // otherwise, they aren't
}
} else {
return false; // if the target object isn't of the type you want to compare, we choose to say it is not equal
}
}
实例
Player
应该是小写的……如果obj
是Player
的一个子类,并且它具有相同的getName
,那么它也将返回true
。有时我将其视为if(obj!=null&&obj.getClass()==this.getClass())
而不是if(obj instanceof Player)
,以确保对象确实具有相同的类型。