বলুন আমার সমান () পদ্ধতি ছাড়াই একটি শ্রেণি রয়েছে, যার উত্স নেই। আমি এই শ্রেণীর দুটি দৃষ্টিতে সমতা জোর করতে চাই।
আমি একাধিক সংস্থান করতে পারি:
assertEquals(obj1.getFieldA(), obj2.getFieldA());
assertEquals(obj1.getFieldB(), obj2.getFieldB());
assertEquals(obj1.getFieldC(), obj2.getFieldC());
...
আমি এই সমাধানটি পছন্দ করি না কারণ প্রথম দিকের প্রতিবেদন ব্যর্থ হলে আমি সম্পূর্ণ সমতা চিত্র পাই না don't
আমি নিজে নিজেই তুলনা করতে পারি এবং ফলাফলটি ট্র্যাক করতে পারি:
String errorStr = "";
if(!obj1.getFieldA().equals(obj2.getFieldA())) {
errorStr += "expected: " + obj1.getFieldA() + ", actual: " + obj2.getFieldA() + "\n";
}
if(!obj1.getFieldB().equals(obj2.getFieldB())) {
errorStr += "expected: " + obj1.getFieldB() + ", actual: " + obj2.getFieldB() + "\n";
}
...
assertEquals("", errorStr);
এটি আমার সম্পূর্ণ সাম্যতার চিত্র দেয়, তবে আড়ম্বরপূর্ণ (এবং আমি সম্ভাব্য নাল সমস্যার জন্যও দায়বদ্ধ হইনি)। তৃতীয় বিকল্পটি তুলনামূলক ব্যবহার করা হয়, তবে তুলনা করুন () আমাকে কোন ক্ষেত্রের সমতা ব্যর্থ করে তা বলবে না।
সাবক্ল্যাসিং এবং ওভাররাইডিং ইকুয়াল (উঘ) ছাড়াই অবজেক্ট থেকে আমি যা চাই তা পাওয়ার কি আরও ভাল অনুশীলন আছে?
equal
পদ্ধতির একটি প্রয়োগ কেবলমাত্র দুটি দৃষ্টান্ত সমান কিনা তা জানায় এবং কেন ইন্টান্সগুলি সমান নয় সে বিষয়ে আমাদের যত্ন নেই।
Object
একটি equals
পদ্ধতি রয়েছে, আপনি সম্ভবত বোঝাতে চেয়েছিলেন যে কোনও ওভাররাইড সমান পদ্ধতি নেই।