В книге «Java OCP 8 Программист Учебное пособие II», он сказал, чтоАнонимный внутренний класс на уровне члена
анонимный внутренний класс является локальным внутренним классом
и
локальный внутренний класс является вложенной класс, определенный в методе
Однако, я могу определить анонимный внутренний класс вне метода:
public class Outer {
Foo ex = new Foo {
@Override
public void bar() {
System.out.println("This is my bar implementation");
}
}
}
void TestClass {
public static void main(String[] args) {
Outer outer = new Outer();
outer.ex.bar();
}
}
книга неправильно сказать, что анонимный внутренний класс является локальным внутренним классом, поскольку он не должен быть локальным (в рамках метода) или в качестве примера я предоставил не анонимный внутренний класс (так как он назначен именованной переменной)?
Благодаря
* " анонимный внутренний класс - это локальный внутренний класс "* ... акцент на * локальный *. Выражение анонимного класса действительно похоже на внутренний класс, если оно определено в нестационарном контексте, потому что, подобно экземпляру внутреннего класса, его экземпляры содержат ссылку на экземпляр-экземпляр. Однако, если он определен в статическом контексте, выражение анонимного класса отличается от внутреннего класса, потому что его экземпляры не содержат ссылки на экземпляр-экземпляр. Вложенные экземпляры внутреннего класса всегда должны иметь закрытый экземпляр. Это не относится ни к локальным, ни к анонимным классам. – scottb
Если в книге говорится, что это неправильно. Анонимный внутренний класс - это определение и реализация какого-либо типа. –