この質問は、私の仕事のプログラミングの過程で出てきました。それは現在のタスクとは無関係になりましたが、誰かが答えを持っているかどうか私はまだ興味があります。
Java 1.5以降では、省略記号構文を使用して、可変数の引数を使用してメソッドシグネチャを使用できます。
public void run(Foo... foos) {
if (foos != null) {
for (Foo foo: foos) { //converted from array notation using autoboxing
foo.bar();
}
}
}
foosリスト内の各fooに対して何らかの操作を実行し、同じAPIを保持して、この呼び出しをオブジェクトのフィールドに委任するとします。どうすればいいですか?私が欲しいのはこれです:
public void run(Foo... foos) {
MyFoo[] myFoos = null;
if (foos != null) {
myFoos = new MyFoo[foos.length];
for (int i = 0; i < foos.length; i++) {
myFoos[i] = wrap(foos[i]);
}
}
run(myFoos);
}
public void run(MyFoo... myFoos) {
if (myFoos!= null) {
for (MyFoo myFoo: myFoos) { //converted from array notation using autoboxing
myFoo.bar();
}
}
}
これはコンパイルされません。どうすればこれを達成できますか(可変数のMyFooをrun(MyFoo ...)メソッドに渡す)?