【发布时间】:2014-03-23 12:29:17
【问题描述】:
我知道这个问题讨论了很多次,但我还是不明白。
研究这段代码:
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 ...
为什么?
【问题讨论】:
-
我希望看到这段代码无法编译,看来我的预期是正确的:ideone.com/Garnnp.
-
@OliCharlesworth 可能是 JDK 问题?
-
@OliCharlesworth 我得到了同样的错误。
-
@gstackoverflow.. 你在哪个 java 版本上编译?
-
@Rohit Jain 抱歉。我更新了主题
标签: java overloading