Если я использую многоточие в основном методе, это имеет значение?Использование многоточия в основном методе?
public static void main(String... args) {
}
Если я использую многоточие в основном методе, это имеет значение?Использование многоточия в основном методе?
public static void main(String... args) {
}
Без разницы. Этот синтаксис «эллипсис» называется varargs, тип параметра которого фактически является массивом.
Это означает, что есть на самом деле три возможных подписи действительного main()
метода:
public static void main(String[] args) {}
public static void main(String... args) {}
public static void main(String args[]) {}
Он не делает никакой разницы, так как виртуальная машина поворачивает многоточие (также называется «переменной длиной») в массив в "компиляции" время:
void myMethod(final X... args)
точно так же, как
void myMethod(final X[] args)
или (реже)
void myMethod(final X args[])
Я уверен, что 'X []' более распространен, чем 'args []' и, на мой взгляд, также сильно предпочтителен ('args' - это тип' X [] ', а не' X'). Вы уверены, что поставили последние два в правильном порядке? –
Да, действительно. Исправлена. – fge
Это то же самое. Учитывая следующие файлы классов:
$ cat MainEllipsis.java
public class MainEllipsis {
public static void main(String... args) {}
}
$ cat MainArray.java
public class MainArray {
public static void main(String[] args) {}
}
После компиляции (javac MainEllipsis.java MainArray.java
), мы можем проверить скомпилированные подписи с помощью javap -s <class>
:
> javap -s MainEllipsis
<...snip...>
public static void main(java.lang.String...);
descriptor: ([Ljava/lang/String;)V
и
> javap -s MainArray
<...snip...>
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
[Ljava/lang/String;
представляет String[]
тип, показывающий что сгенерированные сигнатуры метода одинаковы.
Помимо того, что другие упомянули, я думаю, что это может быть полезно для написания модульных тестов вашего метода main().
Вы попробовали? –
да .. это сработало .. но я просто хочу знать .. это тоже действительный подход ..? – Harinder
Nat Pryce берет на себя следующее: http://natpryce.com/articles/000708.html –