gpt4 book ai didi

java - 为什么不能在方法中采用多个可变参数参数?

转载 作者:行者123 更新时间:2023-12-02 00:38:32 25 4
gpt4 key购买 nike

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);
}
}

每当我们使用一种方法时,它只需要一个变量,大部分位于方法签名的末尾。为什么会出现这种情况?

为什么我们不能使用多个可变长度参数?我正在从编译器的角度寻找答案。

最佳答案

如果两个变量类型相同怎么办:

public static void m1(int...x, int...y) {

编译器应该在哪里分割xy之间的输入参数?我也不知道。编译器必须禁止这种情况,因为没有好的方法来处理它。

变量arity(“varargs”)参数必须位于方法签名的末尾,以便编译器可以知道哪些参数映射到哪些形式参数。超出固定参数的任何参数都会发送到表示 varargs 参数的数组。

JLS, Section 8.4.1 ,说:

The last formal parameter of a method or constructor is special: it may be a variable arity parameter, indicated by an ellipsis following the type.

由于上述原因,它在 JLS 和编译器中强制执行。

关于java - 为什么不能在方法中采用多个可变参数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19188998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com