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