在 Java 5 中提供了变长参数,允许在调用方法时传入不定长度的参数。变长参数是 Java 的一个语法糖,本质上还是基于数组的实现:
void foo(String... args);
在定义方法时,在最后一个形参后加上三点 …,就表示该形参可以接受多个参数值,多个参数值被当成数组传入。上述定义有几个要点需要注意:
调用可变参数方法,可以给出零到任意多个参数,编译器会将可变参数转化为一个数组。也可以直接传递一个数组。
调用一个被重载的方法时,如果此调用既能够和固定参数的重载方法匹配,也能够与可变长参数的重载方法匹配,则优先匹配固定参数的方法
调用一个被重载的方法时,如果此调用既能够和两个可变长参数的重载方法匹配,则编译出错
public class Varargs { public static void test(String... args) { System.out.println("version 1"); } public static void test(String arg1, String... arg2) { System.out.println("version 2"); } public static void main(String[] args) { test("a","b");//Compile error } }
应当避免带有变长参数的方法重载
原文:https://www.cnblogs.com/wu-myblog/p/14175146.html