다음과 같은 문제점이 있습니다. 두 개의 중첩 된 익명 유형. 가장 내부 클래스 내부의 외부 익명 클래스에 대한 "this"참조에 액세스하려고합니다. 대개 이름이 지정된 외부 클래스 (익명 클래스를 "클래스 외부"라고 부름)에 익명 중첩 클래스가있는 경우 중첩 클래스 Outer.this.someMethod()
안에 입력합니다. 익명 인 경우 외부 클래스를 어떻게 참조합니까? 예제 코드 :익명 외부 클래스의 "this"참조에 액세스하는 방법
public interface Outer {
void outerMethod();
}
public interface Inner {
void innerMethod();
}
...
public static void main(String[] args) {
...
new Outer() {
public void outerMethod() {
new Inner() {
public void innerMethod() {
Outer.this.hashCode(); // this does not work
} // innerMethod
}; // Inner
} // outerMethod
}; // Outer
...
} // main
내가 오류입니다
외부는 내가이 같은 기준을 복사 할 수 있다는 것을 알고
범위 내에서 액세스 할 수있는 유형의 없음 둘러싸 예 :
final Outer outerThisCopy = this;
Inner
개체를 찾은 다음이 변수를 참조하십시오. 진짜 목표는 디버그 목적으로 outerThisCopy
의 hashCodes와 new Inner
객체 (즉, Outer.this
) 내부에서 액세스 한 객체를 비교하기 위해서입니다. 이 두 객체가 (내 경우에는) 다르다고 생각하는 좋은 주장이 있습니다. [상황 : "내부"클래스에서 음영 처리되지 않은 "외부"클래스에 구현 된 getter를 호출하면 해당 객체가 반환됩니다.
아이디어 "어떻게 접근합니까?" 익명 유형?
감사합니다.
'int outerHashCode() {return hashCode(); }'익명의 외부 클래스. 내부 클래스에서는이 메서드에 액세스 할 수 있습니다. 그냥 전화 해. 나는 또 다른 접근법이 가능하지 않다는 것을 두려워한다. – Seelenvirtuose