【发布时间】:2011-05-26 18:34:47
【问题描述】:
我正在尝试在我的应用程序中为 Java 类 Book 和 Chapter 实现 equals 方法。 Book 有一组Chapters,而Chapter 有一个关联的Book。双向关联如下图:
class Book{
private String isbn;
private String name;
private Date publishDate;
private Set<Chapter> chapters;
...
public boolean equals(Object o){
if(o == this){
return true;
}
if (!(o instanceof Book)){
return false;
}
Book book = (Book)o;
if( (this.isbn.equals(book.getIsbn()) ) && (this.name.equals(book.getName())) &&(this.publishDate.equals(book.getPublishDate())) &&(this.chapters.equals(book.getChapters())) ){
return true;
}else{
return false;
}
}
}
现在我尝试为Chapter 实现equals:
public class Chapter {
private String title;
private Integer noOfPages;
private Book book;
...
public boolean equals(Object o){
if(o == this){
return true;
}
if (!(o instanceof Chapter)){
return false;
}
Chapter ch = (Chapter)o;
if((this.title.equals(book.getTitle())) && (this.noOfPages.intValue()== book.getNoOfPages().intValue()) ){
return true;
}else{
return false;
}
}
}
在这里,我想知道是否还需要比较 book 字段。那不会开始无限循环吗?对于这种双向关联,实现equals 方法的正确方法是什么?
【问题讨论】:
标签: java equals bidirectional