2013-12-25 4 views
5

Я только что видел кто-то использовать этот альтернативный синтаксис для массивов и было интересно:Java синтаксис массива альтернативный

Является

public void fn(Character[]...){} 

эквивалентно

public void fn(Character[]){} //(i.e. "..." is redundant) 

или это эквивалентно

public void fn(Character[][]){} 
+0

Вы видели это как параметр функции? Если это так, это означает переменное количество аргументов. – Asterisk

+1

Справа. Я думаю, что Асаф ответил на ваш вопрос, а затем – unekwu

+0

yeh он сделал, спасибо – timeshift117

ответ

3

Использование vararg s вы разрешите несколько параметров, используя только один 2D-массив, который вы разрешите только одному параметру. Они могут привести к одному двумерному массиву, но они сильно отличаются тем, как он называется.

Небольшой образец:

public class Test { 
    public static void main(String[] args){ 
     doSomething(new char[5], new char[6]); 
     doSomething(new char[2][3]); 
    } 

    private static void doSomething(char[]... args){ 
     for(char[] s : args){ 
      System.out.println(s.length); 
     } 
    } 
} 

работает просто отлично:

5 
6 
3 
3 

Однако, если бы вы просто использовать char[][], первый способ вызова не будет работать. В этом разница.

char vs Char не имеет функциональных отличий в этом случае, хотя вы можете оставить последнее замечание от this answer.

Смежные вопросы