étodo @equals () para classes com associação bidirecional
Estou tentando implementarequals
método para classes JavaBook
eChapter
na minha aplicação.Book
tem um conjunto deChapter
s, enquanto umChapter
tem um @ associaBook
. A associação bidirecional é mostrada abaixo:
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;
}
}
}
Agora eu tentei 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;
}
}
}
Aqui, eu estou querendo saber se eu preciso comparar o campo do livro também. Isso não iniciaria um loop infinito? Qual é a maneira correta de implementar oequals
método para essas associações bidirecionais?