Java重写equals

equals()的参数可以为null。API对应的定义如下:

public  boolean equals(Object obj)

其比较规则为:当参数obj引用的对象与当前对象为同一个对象时,就返回true,否则返回false。

如果传入的参数为null,表示obj没有引用的对象,那当前对象与其比较还有意义么?因为能够调用equals这个方法的对象,最重要的一个前提就是当前对象不能为null,否则就会报那个经典的java.lang.NullPointerException。

@Override
      public boolean equals(Object obj){
           if(this == obj){//判断两个对象数否相等
                 return true;
               }
            if(obj==null){//判断参数对象是否为空
                 return false;
               }
            if(!(obj instanceof Course)){//判断参数的类型
                 return false;
                }
            Course course = (Course)obj;

            //判断要满足的条件
              if(this.name ==null){
              if(course.name==null){
               return true;
                 }else{
                return false;
                }
                   }else{
    if(this.name.equals(course.name))
      return true;
    else
      return false;
    }
   }

原文地址:https://www.cnblogs.com/dukc/p/4747340.html