Почему класс, содержащий main, не должен быть публичным?

Я объявил следующий класс

class A { //not public
  public static void main(String args[]) {
     System.out.println("done");
 }

Когда я компилирую и запускаю его, он работает нормально и печатает вывод "done". Такое же поведение, даже когда я объявляю его как находящееся в "package a;"

Однако, если спецификация JVM требует, чтобы метод main был общедоступным, поскольку «он не может видеть main иначе», разве он не должен применяться и к классу? Если JVM «не видит» A.main (), когда он не объявлен как public, как он может видеть сам класс A.

Есть ли какое-либо объяснение этому, кроме «потому что в спецификации так сказано»?

Ответы на вопрос(3)

Ваш ответ на вопрос