2009-07-05 2 views
120

에서 다음 코드를 감안할 때 :액세스 "이"자바 익명 클래스

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. 
     } 
    }; 
    } 
} 

가 내 익명 클래스의 select() 방법 내에서 Container.select()에 액세스하려는합니다. 그러나 this.select()은 다시 익명 클래스 'select() 메서드를 호출합니다.

나의 제안은 다음과 같습니다

컨테이너, 예를 들어,로 필드를 소개합니다

private Container self = this; 

지금은 익명의 클래스 내에서 self.select()를 호출하여 Container.select()에 액세스 할 수 있습니다.

이 방법이 적절한가요? 아니면 더 좋은 방법이 있습니까?

답변

236
Container.this.select(); 
+9

이제 완전히 새로운 것입니다. –

+1

나는 방법과 속성이 할 수있는 것처럼이 키워드가 차별화 될지조차 모른다. +1 –

+0

여기서 정확히 '컨테이너'클래스를 지정해야한다는 점에 유의해야합니다. 조상은 받아 들여지지 않습니다. – velis

39

내부 클래스와 별개로 Container.this.select()을 쓸 수 있습니다!