У меня вопрос не совсем по теме: я зависла на том, как запускается программа именно в этом случае.
Вот есть у нас класс Solution. У него есть метод main, с которого и начинается работа программы. И внутри этого метода создаётся объект класса Solution же. Это какая-то рекурсия... или нет?
Могу ли я в функции main написать строчку solution.main(arr)?
Могу ли я создать рядом ещё один класс с функцией main - и что тогда будет?
Где хорошо расписана эта тема?
Victoria
2 уровень
Где почитать о запуске программы?
Обсуждается
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис Enterprise Java Developer
3 сентября 2025, 13:45
Вообще, обсуждать код без кода это не очень продуктивно.
Отвечая на твой вопрос, никакой рекурсии тут нет. Метотд main будучи статическим существует в единственном виде, с него начинается выполнение программы. То что в нём ты создаёшь экземпяр класса не запускает автоматически выполнение "нового" метода main. Но само собой рекурсия начнётся если ты его дёрнешь руками. Возможно поэтому так не поступают :)
Что до постановки вопроса "могу ли я", что мешает попробовать? :)
Если же у тебя несколько классов с main... и что с того? ну просто любой является технически исполнимым. Запустится тот который ты запустишь руками, или укажешь в манифесте как главный при сборке артефакта.
Если говорить про прям хорошо и дотошно расписано - тебе в JLS, но думаю ты там уснёшь. А если точечно - почитай про инициализацию классов, как и когда отрабатывают статические блоки, чем статика отличается от не статики. По идее начать можно с ClassLoader
Chapter 12. Execution
12.4. Initialization of Classes and Interfaces
Class Loaders in Java
+2