equals方法重写

Posted 暗杠小发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了equals方法重写相关的知识,希望对你有一定的参考价值。

在java中常见的equals方法的重写:

举例:一个自定义类ball如下

public class Ball {
    private String name;
    private int weight;
    
    public Ball(String name,int weight){
      this.name = name;
      this.weight = weight;
    }
}

我们可以这样重写equals方法:

 public boolean equals(Object obj){
        if(obj == null){
            return false;
        }else{
            if(obj instanceof Ball){
                Ball ball = (Ball)obj;
                if(this.name == ball.name&&this.weight==ball.weight){
                    return true;
                }
            }
            
        }
        return false;
    }

另有更简介方法如下:


 public boolean equals(Object obj){
            if(obj instanceof Ball){
                Ball ball = (Ball)obj;
                return this.name==ball.name&&this.weight==ball.weight)
            else{
                        return super.equals(obj);
          }
    }
 

更严谨的写法:

 public boolean equals(Object obj){
            if(obj instanceof Ball){
                Ball ball = (Ball)obj;
                return    this.name.equals(obj.name)&&
                              this.weight.equals(ball.weight);
            else{
                        return super.equals(obj);
          }
    }

相比较上面两种,第三种更为严谨。

以上是关于equals方法重写的主要内容,如果未能解决你的问题,请参考以下文章

Java 重写equals方法

SpringBoot 重写hashCode方法和equals方法

重写HashCode和equals规范

重写了equals方法为何需要重写 hashCode

重写equals 方法的注意事项

【彻底理解】 为啥重写equals()方法为啥要重写hashCode()方法