равно, вы можете сделать что-то вроде
аюсь реализоватьequals
метод для классов JavaBook
а такжеChapter
в моем приложении.Book
имеет наборChapter
с, а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;
}
}
}
Теперь я попытался реализоватьequals
заChapter
:
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;
}
}
}
Здесь мне интересно, нужно ли мне сравнивать книжное поле? Разве это не начало бесконечный цикл? Каков правильный способ реализацииequals
метод для таких двунаправленных ассоциаций?