У меня есть следующая проблема. Два вложенных анонимных типа. Я хочу получить доступ к "this" ссылке внешнего анонимного класса внутри самого внутреннего класса. Обычно, если у кого-то есть анонимный вложенный класс в именованном внешнем классе (позволяет называть его "класс Outer" ), он вводит внутри вложенного класса Outer.this.someMethod()
. Как я могу ссылаться на внешний класс, если он анонимный?
Пример кода:
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
Ошибка, которую я получаю,
Нет экземпляра экземпляра типа Outer, доступного в области
Я знаю, что могу скопировать ссылку следующим образом:
final Outer outerThisCopy = this;
непосредственно перед созданием объекта Inner
, а затем обратитесь к этой переменной. Реальная цель заключается в том, что я хочу сравнить хэш-коды outerThisCopy
и объект, доступный внутри объекта new Inner
(т.е. Outer.this
) для целей отладки. У меня есть хорошие аргументы, чтобы думать, что эти два объекта различны (в моем случае).
[Контекст: аргумент состоит в том, что вызов геттера, реализованного в классе "Outer", который не затенен в классе "Inner", возвращает разные объекты]
Любые идеи, как мне получить доступ к ссылке "this" в приложении анонимного типа?
Спасибо.