2010-11-14 2 views
6

Я хочу передать различное количество строк функции java, предположим, что это строки для фильтрации запроса, это может быть 2 -4 строки.Каков наилучший способ передачи неизвестного числа строк функции в java

Как вы думаете, что будет лучшим способом сделать это?

a) создание перегрузки для той же функции с различным количеством параметров? b) создать новый экземпляр массива строки и передать его функции?

любой другой предпочтительный способ?

благодаря

ответ

11

Java оказывает поддержку переменных списков аргументов, так как 1.5:

public void myMethod(String... values) 
{ 
    for (String val : values) 
    { 
     // do something 
    } 
} 

Правила просты:

  • переменная аргумент должен быть последним аргументом в подписи метода.
  • Это единственный аргумент, поэтому все значения будут одного типа.
  • Внутри метода vararg представляется массивом.
  • При вызове метода вы можете передавать отдельные значения или массив.
+0

Отлично, спасибо! Вам нужно передать хотя бы один параметр или есть вероятность, что массив будет пустым? –

+1

@Doron - нет, вы получите пустой массив, если не будете передавать какие-либо аргументы. – Anon

+0

Благодарим вас за разъяснение –

0

Создание перегрузки (a) имеет то преимущество, что вы получите ошибку времени компиляции, если вы передадите неправильное количество строк.

В качестве альтернативы вы можете использовать varargs.

+1

Не думаете ли вы, что это будет пустой тратой кода, написав ту же функцию 3 раза? –

+0

@Doron Sinai: Два из них могут быть сделаны тривиальными, например. передавая нули вместо отсутствующих аргументов. Это похоже на модель телескопического конструктора, которая имеет свои преимущества и недостатки. – vitaut

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