2

Java メソッドに引数を渡す必要がありますfunc(String, String...)。問題は、引数として渡す必要があるすべての文字列を持っていますが、それらはArrayListコンテナー内にあります。

例えば:

for(...some condition...)
{
    //the other method returns an ArrayList with different size in each iteration
    ArrayList <String> values = someOtherMethod(); 
    func(values) //values is an ArrayList<String>, containing all the arguments
}

ArrayList<String>に変換できないというエラーが表示されStringます。someOtherMethodメソッドは反復ごとに異なるサイズのコンテナーを返すため、値のサイズが変化するため、values[0], values[1], etc引数として渡すことができません。

X 個の文字列変数が必要だと推測してfuncいますが、コンテナーのサイズが一定でない場合にコンテナーを X 個の変数に変換する方法がわかりません。

4

3 に答える 3

2

「...」演算子は配列を受け入れるため、次のようにするだけです。

ArrayList <String> values = someOtherMethod(); 
func(values.toArray(new String[values.size()]);
于 2013-09-28T10:58:05.290 に答える
2

1つと任意の数の追加funcが必要なため、少し複雑です:StringStrings

List<String> values = someOtherMethod();
if (values.isEmpty()) {
    // handle special case
} else{
    func(values.get(0), values.subList(1, values.size()).toArray(new String[]));
}
于 2013-09-28T11:02:12.530 に答える
1

関数はX個の文字列変数を必要としていると思います。

Varargsを探していると思います。

関数の署名を次のように受け入れるように変更します

public someReturnType func(String... vargs) { }

パラメータとして可変長の引数を取ります。

そして、メソッド内で、次のようにアクセスできます

  for (String currentarg: args) {

   // do something with currentarg
 } 

補足: バージョン 1.5 からのみ利用可能です。

Varargs に関するドキュメントから詳細をご覧ください

于 2013-09-28T10:59:48.987 に答える