Я думаю, что здесь есть некоторая путаница в номенклатуре, которая, по общему признанию, слишком глупа и сбивает с толку.
Как бы вы их ни называли, эти шаблоны (и несколько вариантов с различной видимостью) все возможные, нормальные, легальные Java:
public class MyClass {
class MyClassInside {
}
}
public class MyClass {
public static class MyClassInside {
}
}
public class MyClass {
public void method() {
JComponent jc = new JComponent() {
...
}
}
}
public class MyClass {
public static void myStaticMethod() {
JComponent jc = new JComponent() {
...
}
}
}
Они учтены в спецификации языка (если вы действительно обеспокоены этим, см. Раздел 15.9.5.1, посвященный статическому методу).
Но эта цитата просто неправильно :
javac.exe разрешит анонимный доступ
классы внутри статического кода инициализации и
статические методы, хотя
спецификация языка говорит чем аноним
классы никогда не бывают статичными
Я думаю, что цитируемый автор путает статическое ключевое слово 1019 * со статическим context . (Следует признать, что JLS также немного запутан в этом отношении.)
Честно говоря, все вышеприведенные шаблоны в порядке (все, что вы называете "вложенными", "внутренними", "анонимными", как угодно ...) Действительно, никто не собирается внезапно удалять эту функциональность в следующем выпуске Java. Честно!