В java можно ли переименовать или рефакторировать" public static void main"?

Я не хочу менять public static void ... String[] args часть подписи, но можно ли "переименовать"эту функцию (например. просто для удовольствия)?

таким образом, точкой входа для выполнения будет функция с другим именем.

переименовать его, например, boot (что лучше отражает, если не является историческим, фактическое использование для него в моем конкретном случае).


по теме

Я заинтересован в том, чтобы сделать что-то другое, но эти вопросы по-прежнему интересны:

public static void main (String arg [ ]) в java это исправлено?

почему имя main для функции main ()

7 ответов


нет. The Спецификация Языка Java говорит:

виртуальная машина Java начинает выполнение, вызывая метод main некоторого заданного класса, передавая ему один аргумент, который является массивом строк.

на спецификация JVM говорит то же самое:

виртуальная машина Java затем связывает начальный класс, инициализирует его и вызывает метод открытого класса void main(String[]).


Простой Ответ Нет, Причина,спецификация такое JVM будет искать только main и не любое пользовательское имя в качестве начальной точки. Он должен называться main с точной подписью public static void main(String[] args)

логично и имеет смысл как JVM знаю, что вместо main метод, он должен искать boot или что-то еще, если java команда имела возможность передать метод start.

но это слишком много для Нет серьезное основание.

во-вторых, поскольку он стандартизирован, он также помогает сообществу разработчиков, кто смотрит на код, знает, как запустить данный Java отдельная программа, или, скажем, если у вас есть проект, то всегда будет искать основной метод, и оттуда двигаться дальше.


при запуске JVM смотрит из метода public static void main с массивом строк в качестве аргумента. Поэтому единственное, что вы можете сделать, это переименовать аргумент args. Если вы хотите такой метод, как boot, никто не мешает вам делать что-то подобное (лично я не рекомендую этот "шаблон")

static void boot(String[] arguments){
    //your logic
}

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

нет. Вы не можете сделать это в соответствии со спецификацией языка Java. Но если вы хотите, поскольку Java-проект с открытым исходным кодом, загрузите полный исходный код языка Java и измените его соответственно ( я имею в виду изменение исходного кода самого JVM). Это единственный способ сделать это.

Так что теперь вы можете понять, почему я сказал, что это невозможно.


ваше приложение запускается из public static void main(String[] args). Это как момент, когда JVM смотрит на начало разбирательства. Если вы измените его, JVM будет чувствовать себя свободно, чтобы не запустить приложение.

Если вы хотите иметь boot() в качестве отправной точки вашего приложения-вызовите его в main().


простой ответ:NO . Когда вы начинаете выполнять программу, она ищет public static void main(String[] args) который принимает аргумент массива строк.От этой точки входа основной поток начать.


Да, мы можем изменить имя основного метода, если мы можем изменить конфигурации JVM и позволить ему искать метод с другим именем вместо основного метода.