【发布时间】:2012-08-01 23:08:48
【问题描述】:
我刚刚发现了一个非常有趣的 Java 技巧:
void method1(Integer... a){
}
所以你可以给这个方法任意数量的整数。
现在,如果我有类似(重载)的方法,如下所示:
void method1(int a, int b){
}
当我执行以下行时运行哪个方法:
method1(1, 2);
好吧,我可以很容易地通过使用不同的方法指令对其进行测试来发现这一点,但是当我考虑“重载”方法中的“规则”时,我必须确保每个重载的方法必须相同,以便编译器确切地知道使用哪一个。
在我看来,上面的代码不应该工作,因为编译器应该是混乱的。但是当我尝试它时,它会起作用。
那么..有人知道更多关于这方面的背景信息吗?
【问题讨论】:
-
这不是(该问题的)完全相同的副本。另一个问题有
long...重载(可变参数和扩展),这有int,int。所以,虽然它是相关的 .. -
现在,如果它被调用为:
method(new Integer(1), new Integer(2))..?当呼叫走这条路线时,看到它被解决会很有趣。我不太了解规则:-/ -
@pst 拆箱在层次结构中的可变参数之前进行,因此仍会调用
method1(int, int)。 -
不是重复的。投票错误地关闭。
标签: java methods overloading variadic-functions