Передача списка в параметр 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)