为什么我们不能将ArrayList <integer>传递给带有(Integer ...)参数的方法?

时间:2015-05-05 21:34:40

标签: java arraylist variadic-functions

我正在尝试执行此Java如何编程任务:“编写计算产品的应用程序 使用可变长度参数列表传递给方法'product'的一系列整数。

我收到类型VarLenArgumentList中的方法产品(Integer ...)不适用的错误消息 参数(ArrayList)。为什么如此,如果Java将可变长度参数列表视为数组? ArrayList不是一个数组吗?

完成任务的另一种方法是什么?

CComPtr<IMyCorrectInterface> ptrMyInterface;
ptrMyInterface.CoCreateInstance(L"ProgID", nullptr, CLSCTX_ALL); // WORKS!!!

2 个答案:

答案 0 :(得分:4)

Integer...参数接受任意数量的Integer个对象或数组Integer[]。由于ArrayList<Integer>不是Integer[],因此不接受。{/ p>

ArrayList不是数组,它是Collection,而java中的数组是不同的对象。

但是,您可以使用toArray(T)方法轻松将ArrayList转换为数组。但请注意它将是一个不同的对象,这主要是当你只想从集合中读取而不是写入它时。

答案 1 :(得分:0)

  

完成任务的另一种方法是什么?

您可以将整数列表传递给方法。

 public static int product (List<Integer> integerList) 
    {
    Integer total = 0;

    for (Integer element : integerList)
        total *= element;

    return total;
    }