equals () método para clases con asociación bidireccional
Estoy tratando de implementarequals
método para clases JavaBook
yChapter
en mi solicitud. @Book
tiene un conjunto deChapter
s, mientras que unaChapter
tiene un @ asociaBook
. La asociación bidireccional se muestra a continuación:
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;
}
}
}
Ahora intenté implementarequals
paraChapter
:
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;
}
}
}
Aquí, me pregunto si también necesito comparar el campo del libro. ¿No comenzaría eso un bucle infinito? ¿Cuál es la forma correcta de implementar laequals
método para tales asociaciones bidireccionales?