Хорошо, я знаю это правило:
Согласно JLS: 8.1.3. Внутренние классы и экземпляры Enclosing, внутренние классы не могут объявлять статические инициализаторы или интерфейсы-члены. Внутренние классы не могут объявлять статические члены, если только они не являются константные поля времени компиляции.
В соответствии с 8.5.2 Декларации типа статического члена, "Пользовательские интерфейсы всегда неявно статичны. Это разрешено, но не требуется для объявление пользовательского интерфейса для явного перечня статических модификатор". Они всегда являются верхними, а не внутренними.
Мне просто интересно, почему. Что может случиться, если нам разрешено объявлять интерфейс внутри внутреннего класса? Не будет ли внутренний класс стать классом верхнего уровня, если я помещу его в другой файл класса?