Ответы пользователя по тегу Java
  • В чем различия между массивами String [] args и String... args?

    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
    }
    Ответ написан
    Комментировать