รับรหัสต่อไปนี้:
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