web-dev-qa-db-ja.com

List <String>をString ...パラメータに渡しています

文字列のリストをパラメーター "String ..."を必要とするメソッドに渡すのに苦労しています。

誰かが私を手伝ってくれる?

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

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

dummyMethodの 'varargs'パラメータで使用するには、List<String>を文字列配列に変換する必要があります。 toArray をパラメーターとして追加の配列とともに使用できます。それ以外の場合、メソッドはObject[]を返し、コンパイルされません。

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

次のことができます。

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

リストを配列に変換します

5
Ahmad Al-Kurdi

文字列配列(String[])内部メソッド。リストを配列に変換して渡す必要があります。

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

後でパラメーターをリストとして解析するので、メソッドを次のように変更することをお勧めします。

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

余分なコストを避けるために。

ただし、このメソッドを「そのまま」使用する場合は、次のように呼び出す必要があります。

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

glorfindelが his answer で示唆しているように、3つのドットは、多くの文字列または文字列の配列を使用してメソッドを呼び出すことができることを意味します(詳細は this post を参照)。

2
vefthym

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()]));
2
akhil_mittal

これはvarargパラメータで、配列を渡す必要があります。 ArrayListは機能しません。メソッドに渡す前に、このリストを配列に変換することができます。

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