Почему внешние классы не являются статическими в java?

В java внешний класс может быть общедоступным, окончательным, дефолтным или абстрактным. Почему не Static как

public static class MyClass{}

Ответ 1

Внешний класс уже неявно статичен.

Нестатический вложенный класс (= внутренний класс) означает, что внутренний класс неявно имеет ссылку на его родительский класс.

Вот почему для вложенного класса вы можете различать статические и нестатические. Это не имеет смысла для внешних классов.

Вот пример, чтобы понять разницу между статическим/нестатическим вложенным классом. Вы должны понять, почему это не имеет смысла во внешнем классе.

public class MyClass {

  private String anAttributeOfMyClass;

  private /*static*/ class MyInnerClass {

    public void foo() {
      /*
       * Here, I can access the attribute of the parent class
       * because I implicitly have a reference to it.
       * Try to make the nested class static an see the difference.
       */
      anAttributeOfMyClass.trim();
    }
  }

}