考虑以下方法签名:
public fooMethod (Foo[] foos) { /*...*/ }
和
public fooMethod (Foo... foos) { /*...*/ }
解释:前者接受一个 Foo 对象数组作为参数 - fooMethod(new Foo[]{..})
- 而后者接受任意数量的 Foo 类型参数,并将它们呈现为方法内的 Foo:s 数组 - fooMethod(fooObject1, fooObject2, etc...
)。
如果两者都被定义,Java 会抛出一个 fit,声称它们是重复的方法。我做了一些侦探工作,发现第一个声明确实需要一个显式的 Foo 对象数组,这是调用该方法的唯一方法。第二种方式实际上既接受任意数量的 Foo 参数,也接受一个 Foo 对象数组。
所以,问题是,由于后一种方法似乎更灵活,是否有任何理由使用第一个示例,或者我错过了什么重要的东西?