هذا مؤشر ضمني لنفسه، ببساطة، أي كائن يستدعي الطريقة التي يوجد بها هذا الكائن، فهذا هو ذلك الكائن.
نموذج التعليمات البرمجية: TestThis_1.java
انسخ رمز الكود كما يلي:
/* السؤال: ما هذا
* نتيجة الإخراج:
* أ@4e44ac6a
*/
الطبقة العامة TestThis_1 {
public static void main(String[] args) {
أأ = جديد أ()؛
System.out.println(aa.f()); //aa.f()، يُرجع المرجع (المؤشر) للكائن aa
}
}
فئة أ {
العامة و () {
return this; // إرجاع مرجع إلى كائن الفئة A للكائن الذي يستدعي طريقة f()
}
}
الاستخدامات الشائعة لهذا
1. التمييز بين المتغيرات التي لها نفس الاسم
نموذج التعليمات البرمجية: TestThis_2.java
انسخ رمز الكود كما يلي:
/* الاستخدام الشائع لهذا 1: تمييز المتغيرات التي لها نفس الاسم
* نتيجة الإخراج:
* هذا أنا = 1
* ط = 33
*/
الطبقة العامة TestThis_2 {
public static void main(String[] args) {
أأ = جديد أ(33);
}
}
فئة أ {
public int i = 1; // هذا متغير عضو
/*ملاحظة: بشكل عام، لا يتم كتابته بهذه الطريقة، فالمنشئ مخصص بشكل أساسي للتهيئة، ويتم كتابته بهذه الطريقة بشكل أساسي لسهولة الفهم*/
public A(int i) { // هذا i متغير محلي
System.out.printf("this.i = %d/n", this.i); //this.i يشير إلى متغير العضو i للكائن نفسه
System.out.printf("i = %d/n", i); //i هنا متغير محلي i
}
}
2. المكالمات المتبادلة بين الصانعين
نموذج التعليمات البرمجية: TestThis_3.java
انسخ رمز الكود كما يلي:
/* الاستخدام الشائع لهذا 2: استدعاء بعضهم البعض في المُنشئ */
الطبقة العامة TestThis_3 {
public static void main(String[] args) {
}
}
فئة أ {
كثافة العمليات ط، ي، ك؛
العامة أ(كثافة العمليات ط) {
this.i = i;
}
العامة أ(كثافة العمليات ط، كثافة العمليات ي) {
/* i = 3; خطأ إذا لم يتم التعليق عليه، فسيتم الإبلاغ عن خطأ: عند استدعاء المُنشئ باستخدام هذا(...)، لا يمكن وضعه إلا في الجملة الأولى
* TestThis_3.java:20: خطأ: يجب أن يكون استدعاء هذا هو البيان الأول في المُنشئ
* هذا (أنا)؛
* ^
*1 خطأ
*/
هذا (أنا)؛
this.j = j;
}
العامة أ(int i، int j، int k) {
هذا (ط، ي)؛
this.k = k;
}
}
أشياء يجب ملاحظتها
الأساليب التي تم تعديلها بواسطة ثابت لا تحتوي على هذا المؤشر. نظرًا لأن الطريقة المعدلة بواسطة static عامة، فلا يمكن تحديد الكائن المحدد الذي تنتمي إليه.
نموذج التعليمات البرمجية: TestThis_4.java
انسخ رمز الكود كما يلي:
/*لا يوجد هذا المؤشر داخل الطريقة الثابتة*/
الطبقة العامة TestThis_4 {
public static void main(String[] args) {
}
}
فئة أ {
ثابت و () {
رد هذا؛
/* رسالة الخطأ: TestThis_4.java:10: خطأ: متغير غير ثابت لا يمكن الرجوع إليه من سياق ثابت
* رد هذا؛
* ^
*1 خطأ
*/
}
}