java oracle - جافا يساوي لفئة.هو==نفس




windows jdk (4)

الدرجة نهائية ، لذا لا يمكن تجاوز الـ equals () الخاصة بها. يتم توارث أسلوب يساوي () من الكائن الذي يقرأ

public boolean equals(Object obj) {
    return (this == obj);
}

لذلك نعم ، هم نفس الشيء بالنسبة لفئة ، أو أي نوع لا يتجاوز equals(Object)

للإجابة عن سؤالك الثاني ، يمكن لكل أداة تحميل ClassLoader فقط تحميل الفصل مرة واحدة وستمنحك دائمًا نفس الفئة للحصول على اسم مؤهل بالكامل.

هل يمكن أن نفعل == على متغير Class بدلاً من equals ونتوقع نفس النتيجة؟

فمثلا:

Class clazz = xyz;

الحالة أ:

if(clazz == Date.class) {
// do something
}

الحالة ب:

if(Date.class.equals(clazz)) {
// do something
}

هل الحالة A والحالة B متطابقتان وظيفياً؟


نعم ، نظرًا لأن رمز equals(...) للفئة هو ما يلي:

public boolean equals(Object obj) {
    return (this == obj);
}

نعم فعلا.

إلقاء نظرة على وصف فئة Class ولاحظ أنه يرث equals من Object ، والتي تقرأ الطريقة:

"يقوم الأسلوب equals الخاص بكائن الفئة بتنفيذ أكثر علاقة التكافؤ الممكنة على الكائنات ؛ أي بالنسبة لأي قيم مرجعية غير صفرية x و y ، ترجع هذه الطريقة true إذا وفقط إذا كانت x و y تشير إلى نفس الكائن (x = = ص لديه القيمة الحقيقية). "


خاص : وصول محدود إلى الفصل فقط

افتراضي (لا يوجد معدِّل) : وصول محدود إلى الفئة والحزمة

محمي : الوصول المحدود إلى الصف ، والحزمة والفئات الفرعية (سواء داخل أو خارج الحزمة)

الجمهور : يمكن الوصول إلى الفصل ، والحزمة (الكل) ، والفئات الفرعية ... باختصار ، في كل مكان.





java