我知道这个问题已经被讨论了很多次,但我仍然不明白。
研究一下这段代码:
public class Main {
public static void var(Integer x, int y) {
System.out.println("Integer int");
}
public static void var(int... x) {
System.out.println("int... x");
}
public static void var(Integer... x) {
System.out.println("Integer...");
}
public static void main(String... args) {
byte i = 0;
Integer i2 = 127;
var(i, i2);
}
}
在我的大脑中遵循以下规则:
扩展
装箱
装箱+可变参数
1.将byte扩展为int
现在我有一个`int` `Integer`,存在一个方法可以接受`Integer`和`int`
2.进行装箱
因此。`int`->`Integer`和`Integer`->`int`参数
我认为这些参数是适用的,并期望看到它们。
Integer int
在输出中。
但我看到。
int ...
为什么?