Задать вопрос
@thatmaniscool

В чем различия между массивами String [] args и String... args?

Иногда встречаю такой вид кода
String [] args
и 
String... args

В чем их отличие?
  • Вопрос задан
  • 5541 просмотр
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
tarzan82
@tarzan82
Запись вида methodName(T... args) называется varargs (Variable Arguments)
Удобство в том, что можно передавать сразу аргументы и не создавать массив и количество аргументом может быть 0 или N. Пример:

public static void vargs(final String... strings) {
	System.out.println(strings);
}

public static void arrs(final String[] strings) {
	System.out.println(strings);
}

public static void main(final String... args) {
	vargs(); // ok
	vargs("1", "2"); // ok
		
	arrs(); // compilation error
	arrs(new String[] {"1", "2"}); // ok
}

Есть пара моментов: методы с varargs нельзя перегружать и varargs должен быть последним аргументом

public static void manyParams(final String... strings, final Integer number) {
	// compilation error
}

public static void manyParams(final Integer number, final String... strings) {
	// ok
}
Ответ написан
Комментировать
al_gon
@al_gon
https://docs.oracle.com/javase/1.5.0/docs/guide/la...

Отличие:

public static void method1(final String arg0, final String[] arg1, final String arg2) {
	
}

public static void method2(final String arg0, final String... arg1, final String arg2) {
	
}


Метод 1 компилируется, 2 нет.

P.S.: Overloading тоже не работает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы