Мы объявляем main
функцию как public
и static
так как Java-интерпретатор должен иметь к ней доступ, и не обязательно, чтобы объект класса вызывал main
функцию. Когда я создал main
функцию внутри внутреннего класса и запускал класс, то и main
функция была выполнена. Как интерпретатор работает внутри, чтобы выбрать main
функцию и выполнить?
Во-первых, позвольте мне исправить ваш вопрос. Как уже упоминалось @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
Подпись основного метода в Java
Основной метод должен строго следовать его синтаксису; в противном случае JVM не сможет найти его, и ваша программа не будет запущена. Вот точная подпись основного метода:
public static void main(String args[])
Если в программе нет этой подписи, JVM не сможет найти главный метод.
В этой подписи..........
public
определяет, что этот метод доступен из класса, static
показывает, что этот метод доступен без создания какого-либо объекта класса, void
показывает, что этот метод не вернет никакого значения, String args
определяет no. аргумента передается пользователем.
Если указанная выше подпись не соответствует JVM, возвращается основной метод, не найденный исключение.