在一个类中定义(重载)两个方法名、返回值一样,而一个方法中传入不定长参数,另一个传入的是定长参数。当在main中调用该方法,并且传入参数满足两个方法时,会使用的是哪一个方法呢?
public class OverLoad{
public static void add(int...a){
System.out.println("不定长参数");
}
public static void add(int a){
System.out.println("定长参数");
}
public static void main(String[] args) {
add(1);
}
}
如代码所示,当调用add(1)时两个方法均满足,运行,结果表面调用的是定长参数的方法。
public class OverLoad{
public static void add(int...a){
System.out.println("不定长参数");
}
/*public static void add(int a){
System.out.println("定长参数");
}*/
public static void main(String[] args) {
add(1);
}
}
接下来注释掉定长参数的方法,运行,结果表面调用的是不定长参数的方法。
初步结论:当类中重载两个除参数(一个是定长参数,另一个是不定长参数,并且类型相同)以外都相同的方法,调用该方法,并且传入的参数两个方法都可以满足时,会优先使用定长参数方法,当发现没有定长方法时,将传入的参数转成数组以满足不定长参数方法。