gpt4 book ai didi

java - 这些方法是如何模棱两可的? (一个采用数组,另一个采用可变参数)

转载 作者:搜寻专家 更新时间:2023-10-30 21:15:04 26 4
gpt4 key购买 nike

这些 append() 方法是如何产生歧义的?

public class Try_MultipleArguments {

public static void main(String[] args) {

int array1[] = new int[] {1, 2, 3};

int array2[] = new int[] {4, 5, 6};

append(array1, array2);

append(array1, 4, 5, 6);

}

public static int[] append(int[] array1, int[] array2) {
int[] ans = new int[array1.length + array2.length];
for(int i=0; i<array1.length; ++i) {
ans[i] = array1[i];
}
for(int i=0; i<array2.length; ++i) {
ans[i+array1.length] = array2[i];
}
return ans;
}

public static int[] append(int[] array1, int ... array2) {
return append(array1,array2);
}
}

更新

Varargs 相当于一个数组,但这是来自方法内部。从方法外部看,它不应该等同于它。

更新 2

我现在明白了,我可以将数组传递给可变参数。我不知道。总是解决这个需要。嗯……这是从 java 可变参数的最开始吗?

最佳答案

来自docs :

The three periods after the final parameter's type indicate that the final argument may be passed as an array or as a sequence of arguments.

所以这是不明确的,因为数组也映射到可变参数。

关于java - 这些方法是如何模棱两可的? (一个采用数组,另一个采用可变参数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31200700/

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