覆写Object.equals方法的模板:
“四步走”
public class Article {
String title;
String author;
String content;
String publishedAt;
@Override
public boolean equals (Object obj){
if(obj==null){ //第一步
return false;
}
if(!(obj instanceof Article)){ //第二步
return false;
}
if(this==obj){
return true;
}
Article a=(Article) obj; //第四步
if(!title.equals(a.title)){
return false;
}
if(!(author.equals(a.author)){
return false;
}
return publisheAt.equals(a.publishedAt);
}
}
什么时候需要覆写equals方法:
1.需要用到引用的相等语义比较
2.需要自定义类,会调用equals方法
比如:List.contains //内部会调用元素类型的equals
如果不覆写Object.equals的意思是:
this==o;
(1)p==q 是判断p和q是否指向同一个对象;
(2) p.equals(q) 是判断p指向的对象和q指向的对象是否相等,不一定是同一个对象;