Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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()方法使同一类的两个对象相等_Java_Boolean_Return_Equals - Fatal编程技术网

Java 使用boolean equals()方法使同一类的两个对象相等

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

有点奇怪

实际上,我已经通过查看示例和修改代码来回答了一个问题,但我并不完全理解它是如何工作的

任何解释都将不胜感激

代码:

我有一个名为Player的类,在main方法的另一个类中创建了3个对象

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)
,以确保对象确实具有相同的类型。