equals
Java クラスBook
とアプリケーションにメソッドを実装しようと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
このような双方向の関連付けのメソッドを実装する正しい方法は何ですか?