[Java]关于重载方法中的可变参数列表

《Thinking in Java》第105页有一句话不理解

图片说明

如何理解你应该总是只在重载方法的一个版本上使用可变参数列表,或者压根就不是用它

就是当重载一个方法时,选择其中的一个重载使用可变参数,其他的避免使用,否则编译的时候容易出问题。具体的参看http://www.cnblogs.com/lanxuezaipiao/p/3190673.html

两个f()应该只用一个或不用 我是这么理解的

可变参数的第一个参数类型不同,而且要放在第二个参数上,你把可变参数理解成数组

就是根据参数判断调用那个方法

这个道理很简单,比如说你有
foo(int x, int ... args)

foo(int x, int y, int ... args)
两个重载形式
那么
foo(1,2,3)到底调用哪一个呢?
如果你有很多重载形式,那么你自己会被自己搞晕了。所以,你应该尽量确保你可变参数的重载形式和别的重载不存在二义性。