รับรหัสต่อไปนี้:
public interface Selectable {
public void select();
}
public class Container implements Selectable {
public void select() {
...
}
public void createAnonymousClass() {
Selectable s = new Selectable() {
public void select() {
//see comment below.
}
};
}
}
ฉันต้องการเข้าถึงContainer.select()
จากภายในselect()
วิธีการเรียนที่ไม่ระบุชื่อ อย่างไรก็ตามthis.select()
จะเรียกselect()
วิธีการของคลาสที่ไม่ระบุชื่ออีกครั้ง
ข้อเสนอแนะของฉันจะเป็น:
แนะนำเขตข้อมูลลงในคอนเทนเนอร์เช่น
private Container self = this;
ตอนนี้ฉันสามารถเข้าถึงได้Container.select()
โดยโทรself.select()
จากภายในชั้นที่ไม่ระบุชื่อ
นี่เป็นวิธีที่สมเหตุสมผลหรือไม่ หรือมีวิธีใดที่ดีกว่า
this
คำหลักจะแตกต่างกันเพียงวิธีและคุณลักษณะ +1