في السياق البرمجي لاختبار OCPJP، يعتبر الأسلوب equals
من الأساليب المهمة جداً. يهدف هذا الأسلوب إلى مقارنة المحتوى بين كائنين من نفس النوع، والعودة بقيمة true
إذا كانت المحتويات متطابقة، و false
إذا لم تكن.
لفهم الإجابة (B)، يجب أن نلقي نظرة على الشيفرة المصدرية المعطاة في السؤال. يتم استخدام الكلاس Person
لإنشاء كائنين، وتم تعيين قيم مختلفة للحقل name
في كل كائن. ثم يتم استدعاء الطريقة equals
للقيام بمقارنة بين الكائنين.
الشيفرة المصدرية:
javaclass Person {
String name;
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null || getClass() != obj.getClass())
return false;
Person person = (Person) obj;
return name != null ? name.equals(person.name) : person.name == null;
}
}
public class Test {
public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
p1.name = "John";
p2.name = "John";
System.out.println(p1.equals(p2));
}
}
الإجابة الصحيحة هي (B)، وذلك لأن الشيفرة المصدرية في طريقة equals
تستخدم name.equals(person.name)
للمقارنة بين الأسماء. وبما أن الأسماء في الكائنين p1
و p2
متطابقة (كلاهما “John”)، فإن الدالة equals
ستعيد قيمة true
.
لتوضيح أكثر، يتم مقارنة الكائنين p1
و p2
في الخطوط التالية:
javaSystem.out.println(p1.equals(p2));
وبما أن الأسماء متطابقة، ستكون النتيجة true
.
المزيد من المعلومات
طبعًا، دعنا نقوم بتوسيع المناقشة حول أسلوب equals
في لغة البرمجة Java وكيفية تنفيذه بشكل صحيح.
أسلوب equals
هو أحد الأساليب الأساسية المستخدمة في Java لمقارنة المحتوى بين كائنين من نفس النوع. عندما تقوم بتنفيذ هذا الأسلوب، يجب عليك اتباع بعض الإرشادات لضمان تحقيق مقارنة دقيقة وصحيحة. إليك بعض النقاط التي يجب مراعاتها:
-
التحقق من الكائن الممرر: يجب التحقق مما إذا كان الكائن الذي تمرره للأسلوب
equals
هوnull
أو من نوع مختلف. يتم ذلك عن طريق فحصobj == null
وgetClass() != obj.getClass()
. -
تحويل الكائن: قد يكون من الضروري تحويل الكائن الممرر إلى نفس النوع من أجل مقارنة دقيقة. يتم ذلك باستخدام
Person person = (Person) obj;
في الشيفرة المصدرية المذكورة. -
مقارنة الحقول: يجب مقارنة الحقول الفردية لضمان تطابق المحتوى. في هذه الحالة، يتم مقارنة الحقل
name
باستخدامname.equals(person.name)
. -
التحقق من القيم
null
: عند مقارنة السلاسل (Strings
)، يجب التحقق من أن القيمة ليستnull
لتجنب الأخطاء.
في الختام، يعد فهم كيفية تنفيذ واستخدام أسلوب equals
أمرًا حيويًا لضمان تحقيق المقارنات بشكل صحيح. يُشدد دائمًا على أن يتم تخصيص اهتمام كبير للمقارنة بين الحقول الفردية والتحقق من حالات الحدود مثل القيم null
.