के साथ कक्षाओं के लिए बराबर() विधि मैं अपने अनुप्रयोग में जावा कक्षाऔर Chapter
के लिए equals
विधि को लागू करने का प्रयास कर रहा हूं। 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;
}
}
}
अब मैं 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;
}
}
}
यहाँ, मैं सोच रहा हूँ अगर मैं किताब क्षेत्र की तुलना करने के साथ-साथ की जरूरत है। क्या वह अनंत लूप शुरू नहीं करेगा? ऐसे बिडरेक्शनल एसोसिएशन के लिए equals
विधि को लागू करने का सही तरीका क्या है?
यहां तक कि अगर इंटरफेस का उपयोग कर वर्गों के बीच द्विदिश निर्भरता रोकता कर सकते हैं, वहाँ अभी भी कार्यावधि में उदाहरणों के बीच एक द्विदिश निर्भरता है। तो मेरा सुझाव है कि किसी को किताबों की तुलना नहीं करनी चाहिए (या तो '==' या 'बराबर()') से, लेकिन या तो किताबों को अनदेखा कर सकते हैं (अलग-अलग पुस्तकों के दो समान अध्याय वास्तव में बराबर या अलग हैं?), या किसी पुस्तक की तुलना करें आईएसबीएन की तरह पहचानकर्ता। –
मैं पूरी तरह से सहमत हूं, मैंने बस परिपत्र निर्भरता पर टिप्पणी की क्योंकि मुझे जब भी संभव हो उससे बचने के लिए सिखाया गया था। –