2011-08-31 17 views
10

में बराबर विधि को ओवरराइड करना डीटीओ में बराबर और हैशकोड विधियों को ओवरराइड करना आवश्यक है? क्योंकि डीटीओ का उपयोग केवल स्थानांतरण डेटा के लिए किया जाता है। क्या इसके बारे में कोई सर्वोत्तम अभ्यास या कुछ है?डीटीओ के

धन्यवाद।

उत्तर

10

This article सलाह से एक टुकड़ा प्रदान करता है:

वस्तुओं एक सूची, सेट, या मानचित्र (या तो एक कुंजी या मान के रूप में) में रखा बराबर का एक उपयुक्त परिभाषा होनी चाहिए।

निश्चित रूप से DTOs से सिर्फ हस्तांतरण और अधिक के लिए इस्तेमाल कर रहे हैं, हम उन्हें रहते हो उन्हें सॉर्ट, उन्हें कैश ...

व्यवहार में लोगों को बराबरी और हैश प्रदान करते हैं? हमेशा नहीं। क्या हमें? मुझे ऐसा लगता है।

+0

का उपयोग कर की सिफारिश कर सकते हो जाता है डेटा केंद्रित "वर्ग है जो डेटाबेस रिकॉर्ड करने के लिए नक्शे" DTOs डेटाबेस रिकॉर्ड के मैप की जाती हैं "यह के लिए विशेष रूप से सच है"? मुझे लगता है कि आपकी संस्थाएं/पीओजेओ होंगे, जबकि डीटीओ केवल डेटा हस्तांतरण के लिए हैं और इसमें कोई भी तर्क नहीं होना चाहिए। –

+5

तर्क और तर्क है ... यदि आप डीटीओ को संग्रह में रखने जा रहे हैं तो हैश और बराबर की आवश्यकता होने की संभावना है। यह गंभीर व्यापार तर्क जोड़ने का मतलब नहीं है। स्पष्टीकरण के लिए – djna

+0

धन्यवाद। –

3

चाहे आप अपने डीटीओ कक्षाओं के लिए equals और hashcode कार्यान्वयन प्रदान करने की आवश्यकता है या नहीं, इस पर निर्भर करता है कि आप उनका उपयोग कैसे करते हैं।

यदि आप उन्हें एक या अधिक संग्रहों के साथ उपयोग करते हैं, तो आपको उचित विधि के लिए कार्यान्वयन प्रदान करना चाहिए। लगभग सभी संग्रह वे स्टोर किए गए ऑब्जेक्ट्स पर equals पर कॉल करते हैं। हैश टेबल आधारित संग्रह HashSet और HashMap कॉल hashcode पर कॉल करें, जबकि क्रमबद्ध संग्रह TreeSet और TreeMap के अलावा compareTo विधि को क्रमबद्ध करें।

संबंधित मुद्दे