Java 익명 클래스에서 "this"에 액세스


143

다음 코드가 주어진다 :

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()하여 액세스 할 수 있습니다 .

이것이 합리적인 방법입니까? 아니면 더 좋은 방법이 있습니까?

답변:


268
Container.this.select();

3
this방법과 속성과 마찬가지로 키워드 조차도 구분할 수 있다는 것을 몰랐습니다 . +1
logo_writer

Container여기에 정확히 클래스 를 지정해야 합니다. 모든 조상은 받아 들여지지 않습니다.
velis

42

당신은 Container.this.select()내부 클래스와 구별되도록 쓸 수 있습니다 !

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.