Как Java-интерпретатор выбирает основную функцию, даже если она находится во внутреннем классе?

1

Мы объявляем main функцию как public и static так как Java-интерпретатор должен иметь к ней доступ, и не обязательно, чтобы объект класса вызывал main функцию. Когда я создал main функцию внутри внутреннего класса и запускал класс, то и main функция была выполнена. Как интерпретатор работает внутри, чтобы выбрать main функцию и выполнить?

  • 1
    Ява не интерпретируемый язык.
  • 0
    stackoverflow.com/questions/11952804/...
Показать ещё 4 комментария
Теги:

2 ответа

2

Во-первых, позвольте мне исправить ваш вопрос. Как уже упоминалось @August java не является интерпретированным языком. Я считаю, что спрашиваю о интерпретаторе, которого вы хотите спросить о JVM (Java Virtual Machine).

Теперь ответ. Я предполагаю, что JVM использует вызов отражения для выполнения метода main(), то есть использует код, похожий на следующий:

Class mainClass = Class.forName(mainClassName); // mainClassName is taken from the command line argument. 
Method main = mainClass.getMethod("main", String[].class);
method.invoke(args); // args are taken from command line
1

Подпись основного метода в Java

Основной метод должен строго следовать его синтаксису; в противном случае JVM не сможет найти его, и ваша программа не будет запущена. Вот точная подпись основного метода:

public static void main(String args[])

Если в программе нет этой подписи, JVM не сможет найти главный метод.

В этой подписи..........

public определяет, что этот метод доступен из класса, static показывает, что этот метод доступен без создания какого-либо объекта класса, void показывает, что этот метод не вернет никакого значения, String args определяет no. аргумента передается пользователем.

Если указанная выше подпись не соответствует JVM, возвращается основной метод, не найденный исключение.

  • 1
    Если однажды эта ссылка сломалась, ответ будет недействительным. Положите что-то, чтобы ответить, и тогда вы можете сослаться на сайт.
  • 0
    Хорошо @ Прошу меня изменить ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню