Raj*_*Raj 1 java overloading variadic-functions
为什么主方法不调用第一种方法?
public class Test {
public static void printValue(byte...b) {
System.out.println("long");
}
public static void printValue(int i, int j, int k) {
System.out.println("int");
}
public static void main(String... args) {
byte b = 9;
printValue(b,b,b);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么输出int?
在选择最合适的方法时,编译器首先会选择加宽,然后选择Boxing,最后,如果全部失败,则为Var-args.在您的情况下,它将bytes扩展所有to ints以获得匹配方法,具有3个int类型参数.有关详细信息,请参阅JLS§15.12.2.