Почему метод main () Java принимает массив аргументов String? - PullRequest
2 голосов
/ 10 апреля 2009

Поскольку это, возможно, один из наиболее широко используемых методов языка Java, почему он должен принимать массив строк и не работает без него? Например, я всегда мог жить с:

public static void main() {}

над

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

Есть ли для этого более высокая цель, чем просто принимать аргументы командной строки, тем более что подавляющее большинство программ на Java управляются с помощью графического интерфейса и не нуждаются в получении аргументов через командную строку?

Ответы [ 8 ]

12 голосов
/ 10 апреля 2009

Я согласен, что это может быть более гибким. Например, в C # все это приемлемые точки входа:

static void Main()
static void Main(string[] args)
static int Main()
static int Main(string[] args)

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

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

9 голосов
/ 10 апреля 2009

даже Java-приложение, управляемое графическим интерфейсом, запустится с некоторым основным методом. «Высшей целью» никогда не было принимать аргументы командной строки.

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

6 голосов
/ 10 апреля 2009

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

Итак реализации основного без строки массива приведет к более сложному запуску-логике и потенциально запутанному и ошибочному поведению, для более чем спорно усиления не написав ни одной декларации параметра меньше (в вашей программе!)

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

4 голосов
/ 10 апреля 2009

"Есть ли более высокая цель для этого (..)"

Да: наследство.

2 голосов
/ 10 апреля 2009

Полагаю, это потому, что многие программы на Java будут принимать хотя бы некоторые параметры. Как и C (синтаксическое вдохновение Java, если не что иное), Java рассматривает лучший способ предоставить их как параметры для main.

Даже программа с графическим интерфейсом часто принимает параметры командной строки. То, что оболочка, из которой она запускается, обычно не запрашивает эти параметры (по умолчанию), не означает, что они не поддерживаются.

2 голосов
/ 10 апреля 2009

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

2 голосов
/ 10 апреля 2009

То, что делают «подавляющее большинство» программ, на самом деле не имеет большого значения с точки зрения того, что необходимо сделать. Все еще есть много программ командной строки, которые управляются аргументами командной строки.

1 голос
/ 10 апреля 2009

Есть также много Java-программ, которые получают аргументы через командную строку. Подумайте о javac, ant, maven и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...