-3
public void test(int... integers, String str) { // error
   ...  
}

错误:

方法 test 的变量参数类型 int 必须是最后一个参数。

public void test(String str, int... integers) {}

它运作良好。这有什么原因吗?

4

1 回答 1

4

好吧,考虑一下这个方法签名:

public void test(int... integers, float val, float val2)

现在,当您调用此方法时:

test(2, 3, 4, 5, 6, 7);

编译器将如何决定何时停止向int...类型参数添加参数?请记住,参数是left-to-right在 Java 中评估的。这就是为什么var-args应该在最后。因此,该编译器可以首先分配固定参数,然后将其余参数转到var-args.

于 2013-08-16T10:58:10.410 回答