Обяснен метод на Java main ()

1. Общ преглед

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

2. Общ подпис

Най-често срещаният шаблон за основен метод е:
public static void main(String[] args) { }

По този начин го научихме, по този начин IDE автоматично допълва кода за нас. Но това не е единствената форма, която този метод може да приеме, има някои валидни варианти, които можем да използваме и не всеки разработчик обръща внимание на този факт.

Преди да се потопим в тези подписи на метода, нека прегледаме значението на всяка ключова дума от общия подпис:

  • модификатор за публичен достъп, което означава глобална видимост
  • статичен - методът може да бъде достъпен направо от класа, не е нужно да създаваме екземпляр на обект, за да има препратка и да го използваме
  • void - означава, че този метод не връща стойност
  • main - името на метода, това е идентификаторът, който JVM търси при изпълнение на Java програма

Що се отнася до параметъра args , той представлява стойностите, получени от метода. Ето как предаваме аргументи на програмата, когато я стартираме за първи път.

Параметърът args е масив от String s. В следния пример:

java CommonMainMethodSignature foo bar

изпълняваме Java програма, наречена CommonMainMethodSignature, и предаваме 2 аргумента: foo и bar . Тези стойности могат да бъдат достъпни вътре в основния метод като args [0] (като foo като стойност) и args [1] (като bar като стойност).

В следващия пример проверяваме args, за да решим дали да заредим тестови или производствени параметри:

public static void main(String[] args) { if (args.length > 0) { if (args[0].equals("test")) { // load test parameters } else if (args[0].equals("production")) { // load production parameters } } }

Винаги е добре да запомните, че IDE също могат да предават аргументи на програмата.

3. Различни начини за писане на основен () метод

Нека проверим няколко различни начина за написване на основния метод. Въпреки че не са много често срещани, те са валидни подписи.

Имайте предвид, че нито едно от тях не е специфично за основния метод, те могат да се използват с всеки метод на Java, но те също са валидна част от основния метод.

Квадратните скоби могат да бъдат поставени близо до String , както е в общия шаблон, или близо до args от двете страни:

public static void main(String []args) { } 
public static void main(String args[]) { }

Аргументите могат да бъдат представени като varargs:

public static void main(String...args) { }

Можем дори да добавим strictfp за метода main () , който се използва за съвместимост между процесорите при работа със стойности с плаваща запетая:

public strictfp static void main(String[] args) { }

синхронизирани и окончателни също са валидни ключови думи за основния метод, но тук те няма да имат ефект.

От друга страна, final може да се приложи върху args, за да се предотврати модифицирането на масива:

public static void main(final String[] args) { }

За да приключим с тези примери, можем да напишем и основния метод с всички горепосочени ключови думи (които, разбира се, вероятно никога няма да използвате в практическо приложение):

final static synchronized strictfp void main(final String[] args) { }

4. Наличието на повече от един основен () метод

Също така можем да дефинираме повече от един основен метод в нашето приложение.

Всъщност някои хора го използват като примитивна тестова техника за валидиране на отделни класове (въпреки че тестовите рамки като JUnit са много по-показани за тази дейност).

За да посочим кой основен метод JVM трябва да изпълнява като входна точка на нашето приложение, използваме файла MANIFEST.MF . Вътре в манифеста можем да посочим основния клас:

Main-Class: mypackage.ClassWithMainMethod

Това се използва най-вече при създаване на изпълним .jar файл. Посочваме кой клас има основния метод за стартиране на изпълнението чрез файла на манифеста, намиращ се на META-INF / MANIFEST.MF (кодиран в UTF-8).

5. Заключение

Този урок описва подробностите за основния метод и някои други форми, които може да приеме, дори и тези, които не са много често срещани за повечето от разработчиците.

Имайте предвид, че въпреки че всички примери, които показахме, са валидни по отношение на синтаксиса, те просто служат на образователната цел и през повечето време ще се придържаме към общия подпис, за да си свършим работата.