【发布时间】:2013-10-04 19:11:16
【问题描述】:
class test {
public static void m1(int...x,double...y) {
/* some code here */
}
public static void main(String args[]){
m1();
m1(10,20,3.5);
m1(20,2.5,3.5,4.5);
}
}
每当我们使用一种方法时,它只需要一个变量,主要是在方法签名的末尾。为什么会这样?
为什么我们不能使用多个可变长度参数?我正在从编译器的角度寻找答案。
【问题讨论】:
-
如何区分这两个列表?
-
是的,您不能使用多个可变长度参数,并且它应该始终是列表中的最后一个。
-
第一个可变参数在哪里结束,第二个从哪里开始?没有更多信息,您无法区分这两个列表。在这些情况下,最好选择两个数组。
-
所以第二个
m1调用应该传递一个int和两个double参数,对吧?随着20自动从整数转换为double。
标签: java compiler-construction jvm