Передача списка в параметр String...

Я изо всех сил пытаюсь передать список строк в метод, требующий параметра"строку...".

может кто-нибудь помочь мне?

// How to put names into dummyMethod?
List<String> names = getNames();

 public void dummyMethod(String... parameter) {
    mInnerList.addAll(Arrays.asList(parameter));
}

6 ответов


вам придется преобразовать List<String> к строковому массиву, чтобы использовать его в параметре 'varargs'dummyMethod. Вы можете использовать toArray с дополнительным массивом в качестве параметра. В противном случае метод возвращает Object[] и он не компилируется:

List<String> names = getNames();
dummyMethod(names.toArray(new String[names.size()]));

вы можете сделать следующее :

dummyMethod(names.toArray(new String[names.size()]) 

это преобразует список в array


передать массив строк (String[]) внутри метода. Вам нужно будет преобразовать свой список в массив, а затем передать его.

if (names != null) {
    dummyMethod(names.toArray(new String[names.size()])); 
}

var-arg фактически принимает массив, и вы можете использовать его как:

dummyMethod(names.toArray(new String[names.size()]));

вот пример кода:

List<String> names = new ArrayList<>();
names.add("A");
names.add("B");
dummyMethod(names.toArray(new String[names.size()]));

поскольку вы позже проанализируете параметр как список, я предлагаю изменить метод на:

public void dummyMethod(List<String> parameter) {
    mInnerList.addAll(parameter);
}

избежать дополнительных расходов.

однако, если вы хотите использовать этот метод "как есть", то вы должны назвать его так:

dummyMethod(names.toArray(new String[names.size()]));

как Глоринеля предполагает в ответ, поскольку три точки означают, что вы можете вызвать метод, используя много строк или массив строк (см. этот пост для более подробной информации).


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

String a = new String[names.size];
list.toArray(a)