Вопрос Java для начинающих о параметрах String [] в методе main - PullRequest
3 голосов
/ 21 мая 2010

Итак, я только что попытался исключить String[] args из метода main

Хорошо скомпилировано!

Но JVM показывает исключение

Почему он компилировался, когда String[] требует, чтобы он включался каждый раз?

Что здесь происходит? Почему не отображается ошибка компиляции?

, набрав это, заставило меня подумать, что, возможно, компилятор не видит это как main метод .. это так?

Если это так .. почему бы и нет? Я имею в виду, не должно ли быть только одного основного метода, который ДОЛЖЕН иметь String[] аргументов в качестве аргумента?

Ответы [ 13 ]

1 голос
/ 21 мая 2010

Да ..

Компилятор Java будет искать такую ​​же сигнатуру метода , чтобы считать его main

Запись любой функции с таким же именем, но с другими параметрами приведет к перегрузке функций.
Перегруженные функции не совпадают .. !!

Случай в C # как-то отличается ..

Наконец, вы должны убедиться в том, что ваш основной файл таков:

 public static void main(String[] args) 
1 голос
/ 21 мая 2010

Разве это не перегрузка? Полностью законно определять метод

static void main() {
}

Это просто не точка входа, которую будет искать JVM.

Перегрузка - это возможность иметь несколько методов с одинаковым именем , но разными аргументами . Фактически, компилятор создает имя на основе имени метода и аргументов.

Таким образом, main (String []) будет вызываться для компилятора как что-то вроде main_String_arr, а main () будет называться как-нибудь как main.

0 голосов
/ 20 октября 2014

Важные моменты:

  1. Ниже приведена подпись основного метода:

    public static void main(String[] args)
    
  2. основной метод может быть перегружен.

  3. Несколько классов могут содержать метод main внутри одного модуля компиляции (и поэтому все они будут называться исполняемыми классами)

  4. Класс, содержащийМетод main может быть или не быть публичным.

  5. По ошибке, если вы опустите ключевое слово static (или сигнатура будет отличаться в любом случае), компиляция будет выполнена, но ошибка времени выполнениябудет происходить.

Из моего блога:

Java: Важные замечания о методе main

...