2

私はメソッドfindByProperties(Parameter ... p);を持っています。したがって、任意の数のパラメーターを取ることができます。しかし、私が混乱しているのは、このメソッドを呼び出さなければならず、パラメーターの数がわからない場合、どうすればよいかということです。

パラメータ付きのリストがあり、メソッドを呼び出すたびにリストのサイズが変わるとすると、リストからメソッド呼び出しにパラメータを追加するにはどうすればよいですか?

for(ArrayList<Parameter> p : list){
   findByProperties(p);  //not sure what to do here
 }

編集:

これが解決策でした:

Parameter[] paramArray = new ArrayList<Parameter>().toArray(new Parameter[]{});
findByProperties(paramArray);
4

5 に答える 5

4

あなたはこのようなことをすることができます:

Parameter[] paramArray = new ArrayList<Parameter>().toArray(new Parameter[]{});
findByProperties(paramArray);

それは次のようなものと同じです:

findProperties(param1, param2);

Javaは内部でvarargs-listを配列に変換するため、配列を渡すこともできます。

于 2013-01-30T15:46:32.847 に答える
3

findByPropertiesvarargsまたは。のいずれかを取るようにオーバーライドできますList<Parameter>。次に、一方を他方に中継できます。

void findByProperties(Parameter... p) {
    findByProperties(Arrays.asList(p));
}

void findByProperties(List<Parameter> p) {
    . . .
}

次に、オブジェクトfindByPropertiesの可変引数リストまたは引数のいずれかを使用して呼び出すことができます。を使用しても、新しい配列は作成されません。実装で既存の配列をラップするだけです。したがって、これはリストから新しい配列を作成するよりも作業が少なくて済みます。ParameterList<Parameter>Arrays.asListListParameter[]

于 2013-01-30T15:39:07.790 に答える
1

メソッドは、ゼロから多くの引数を受け入れるパラメーター、いわゆるvar-argメソッドを宣言できます。

var-argパラメーターはsintaxtype...nameでデカールされます。例えば:

doSomething(int ... x){}

于 2013-01-30T15:37:36.433 に答える
1

Javaでは、変数引数を持つメソッドの配列を渡すこともできます。したがって、パラメータリストのメソッドを使用して、をtoArrayに変換できます。これは、に直接渡すことができます。List<Parameter>Parameter[]findByProperties

for (ArrayList<Parameter> p : list){
    Parameter[] param = p.toArray(new Parameter[p.size()])
    findByProperties(param);
}

この他の場所も行う必要がある場合は、便利な方法を作成することもできます。

public ... findByProperties(List<Parameter> p) {
    return findByProperties(p.toArray(new Parameter[p.size()]));
}
于 2013-01-30T15:39:02.573 に答える
1

findByProperties(パラメータ... p);

uはメソッドfindByProperties();を呼び出すことができます。(または)findByProperties(p);

ただし、findByProperties(p、p、p);ではありません。

于 2013-01-30T15:51:33.863 に答える