Java var args参数应该是参数列表中的最后一个参数

Java var args参数应该是参数列表中的最后一个参数,java,variadic-functions,Java,Variadic Functions,错误: 方法测试的变量参数类型int必须是最后一个参数 它工作得很好。有什么原因吗? < P>,请考虑此方法签名: public void test(String str, int... integers) {} 现在,当您调用此方法时: public void test(int... integers, float val, float val2) 编译器将如何决定何时停止向int..type参数添加参数?记住,在Java中,参数是从左到右计算的。这就是为什么var args应该位于末尾的

错误:

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


它工作得很好。有什么原因吗?

< P>,请考虑此方法签名:

public void test(String str, int... integers) {}
现在,当您调用此方法时:

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

编译器将如何决定何时停止向
int..
type参数添加参数?记住,在Java中,参数是从左到右计算的。这就是为什么
var args
应该位于末尾的原因。因此,编译器可以首先分配固定参数,然后分配其余参数,转到
var args

谢谢@devnull,我想我应该删除它:)为什么编译器不能看到6和7必须是浮点参数,因此2,3,4,5必须是整数?注意,参数在运行时仍将从左到右进行计算。只要只有一个vararg,它就可以位于参数列表中的任何位置。其他一切都暗示着编译器编写者懒惰。
public void test(int... integers, float val, float val2)
test(2, 3, 4, 5, 6, 7);