2016-11-15 3 views
0

Это может быть глупой проблемой. Я считаю, что ясно, чего я хочу достичь, но я не могу придумать синтаксис для него. Предположим, у меня есть:Отправить вектор как параметр в Java

public void foo(int[] v){ 

} 
public static void main(String args[]){ 
    foo({1, 2, 3}); 
} 

Можно ли вызвать foo без объявления нового массива? Если да, то как?

+1

Вы должны объявить новый массив. Вам не нужно назначать его переменной. –

+0

Это похоже на работу. Глупый я не пробовал foo (новый int [] {1, 2, 3}); –

ответ

4

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

public void foo(int... v) { 
    // ... 
} 

public static void main(String args[]) { 
    foo(1, 2, 3); 
} 

Здесь значения, передаваемые в foo будут автоматически преобразованы в массив. Значение v будет фактически int[].

В качестве альтернативы, сохраняя оригинальную подпись foo, вы могли бы написать так:

public void foo(int[] v) { 
    // ... 
} 

public static void main(String args[]) { 
    int[] params = {1, 2, 3}; 
    foo(params); 
} 

Это не представляется возможным объединить эти две строки иначе в foo({1, 2, 3}) как вы написали.

Или вы могли бы написать так:

public static void main(String args[]) { 
    foo(new int[]{1, 2, 3}); 
} 

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

+0

@BillMack это тоже хорошо, см. Мой обновленный ответ. – janos

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