У меня есть недоразумение о том, что такое анонимный класс в Java. Рассмотрим следующий простой пример:
public static void main (String[] args) throws java.lang.Exception
{
B b = new B(){ };
System.out.println(b.b);
}
interface B{ int b = 1; }
Почему компиляция кода? JLS, глава 15 говорит:
Анонимный класс всегда является внутренним классом (§8.1.3); это никогда статические
Но JLS, chapt 8
Внутренний класс - это вложенный класс, который явно или неявно объявленный статический.
Таким образом, анонимный класс является внутренним классом. Но мы используем их в статическом контексте. Почему здесь это правильно?