आपका प्रश्न थोड़ा अस्पष्ट है। सबसे पहले आपने "एक ही कक्षा के दो उदाहरण" कहा, फिर आपने कहा "कक्षाएं बहुत जटिल हैं"। क्या यह किसी भी वर्ग के उदाहरणों के बीच अंतर खोजने के लिए एक सामान्य समाधान है, या यह सिर्फ एक विशिष्ट मामला है? दूसरी अस्पष्टता का मतलब है कि "मतभेदों की प्रतिलिपि बनाएँ"। उदाहरण के लिए, यदि यह एक स्ट्रिंग है, तो अंतर क्या दो स्ट्रिंग्स के बीच नया उदाहरण में कॉपी किया जाएगा? यदि यह एक संग्रह है, तो संग्रह के बीच अंतर क्या है? क्या होगा यदि आपके पास दो ArrayLists हैं जिनके पास अलग-अलग ऑर्डर हैं।
यदि यह एक विशिष्ट मामला है, तो आप कक्षा में एक विधि बना सकते हैं जहां आप एक ही कक्षा के उदाहरण में पास करते हैं। फिर आप प्रत्येक क्षेत्र में पुनरावृत्त कर सकते हैं और मतभेदों की तुलना कर सकते हैं।
public TheClass difference(TheClass that) {
TheClass newClass = new TheClas()
if (this.getName().equals(that.getName()) == false) {
newClass.setName(that.getName());
}
...
}
लेकिन यह आपके ऑब्जेक्ट ग्राफ़ को कितना गहराई के आधार पर हाथ से बाहर निकल सकता है।
शायद यदि आप एक सामान्य/पुन: प्रयोज्य समाधान बनाने की कोशिश कर रहे हैं तो बिल्डर पैटर्न यहां आसान हो सकता है। आप अपाचे कॉमन्स कोड बेस देख सकते हैं और देख सकते हैं कि वे हैशकोडबिल्डर और ToStringBuilder को कैसे कार्यान्वित करते हैं। उनके पास उपयोगिता का प्रतिबिंब संस्करण भी है। देखें कि वे गहरे और उथले बराबर कैसे संभालते हैं।
स्रोत
2010-08-11 01:56:06
एचएम ... कोई दो जावा बीन्स समान नहीं हैं ... http://www.coffeeobsessed.net/wp-content/uploads/2010/02/kawa-java-beans.jpg –