#java #python
Я новичок в Python и стараюсь понять все через язык, который знаю, - через Java. Наткнувшись на if __name__ == "__main__", впал в ступор. Читаю ответы по данной теме, но все равно инфа сложно "ложится". Есть ли аналог этих __name__ да "__main__" на языке Java? Заранее спасибо. P.S. Не нужно писать про дубликат. В вопросах нет аналогов с Java. Не стоит рубить с плеча. Прочтите мой вопрос внимательно, пожалуйста.
Ответы
Ответ 1
По отдельности эти конструкции на Java не перевести, но вместе - вполне возможно если понимать что они делают. Дело в том, что в Питоне любой модуль является исполнимым - и если его запустить, он всегда получает имя __main__. Ну а __name__ - это имя текущего модуля. Таким образом, проверка if __name__ == "__main__" проверяет что модуль был запущен из командной строки, а не был импортирован из другого модуля. Иными словами, проверка if __name__ == "__main__" - это дополнительная точка входа в программу. В языке Java точками входа в программу являются методы main: public static void main(String[] args)Ответ 2
Подробный ответ на то, что делает эта констнукция в Python, есть по ссылке, приведённой пользователем Twiss в комментарии, перепечатывать я это не буду. В Java аналога такой конструкции нет и быть не может. В отличии от Python, импорт класса в Java не выполняет весь его код автоматически, поэтому подобные костыли не нужны. Кроме того, в Java программу нельзя начинать выполнять с произвольного класса. Точкой входа в программу может быть только класс, в котором есть метод с сигнатурой public static void main(String[] args) Если попытаться запустить класс, в котором такого метода нет, то вылетит ошибка "Main method not found".
Комментариев нет:
Отправить комментарий