java为什么我们不能将ArrayList<Integer>传递给具有(Integer…)的方法参数
我试图做这个Java如何编程任务:“编写一个计算产品的应用程序 使用可变长度参数列表传递给方法“product”的一系列整数的
我得到一条错误消息,方法乘积(整数…)在类型中,VarLenArgumentList不适用于 参数(ArrayList)。如果Java将变长参数列表视为数组,为什么会这样?ArrayList不是数组吗
完成任务的另一种方式是什么
Scanner keyboard = new Scanner(System.in);
int flag = 0;
ArrayList<Integer> intArray = new ArrayList<>();
do
{
System.out.print("Enter a positive integer or '-1' to quit:" );
int input = keyboard.nextInt();
intArray.add(input);
} while (flag != -1);
product(intArray);
}
public static int product (Integer... numbers)
{
int total = 0;
for (Integer element : numbers)
total *= element;
return total;
}
# 1 楼答案
Integer...
参数接受任意数量的Integer
对象或数组Integer[]
。因为ArrayList<Integer>
不是Integer[]
,所以它不被接受ArrayList
不是数组,而是Collection
,而java中的数组是另一个对象不过,您可以使用^{} 方法轻松地将
ArrayList
转换为数组。但请注意,它将是一个不同的对象,这主要在您只想从集合中读取而不是写入时非常有用# 2 楼答案
可以将整数列表传递给该方法