次のメソッドシグネチャを検討してください。
public fooMethod (Foo[] foos) { /*...*/ }
と
public fooMethod (Foo... foos) { /*...*/ }
説明:前者はFooオブジェクトの配列を引数としてfooMethod(new Foo[]{..})
取ります---後者はFoo型の任意の量の引数を取り、それらをメソッド内のFoo:sの配列として提示します- fooMethod(fooObject1, fooObject2, etc...
)。
両方が定義されている場合、Javaは適合をスローし、それらが重複するメソッドであると主張します。私はいくつかの探偵の仕事をしました、そして最初の宣言が本当にFooオブジェクトの明示的な配列を必要とすることを知りました、そしてそれはそのメソッドを呼び出す唯一の方法です。2番目の方法は、実際には任意の量のFoo引数を受け入れ、Fooオブジェクトの配列も受け入れます。
それで、問題は、後者の方法がより柔軟に見えるので、最初の例を使用する理由はありますか、または私は重要な何かを逃したことがありますか?