68

我有一个List<Thing>并且我想将它传递给一个声明的方法doIt(final Thing... things)。有没有办法做到这一点?

代码看起来这样:

public doIt(final Thing... things)
{
    // things get done here
}

List<Thing> things = /* initialized with all my things */;

doIt(things);

该代码显然不起作用,doIt()因为Thing不需要List<Thing>.

有没有办法将列表作为可变参数传递?

这是在 Android 应用程序中,但我不明白为什么该解决方案不适用于任何 Java

4

2 回答 2

114

只是通过things.toArray(new Thing[things.size()])

于 2012-08-31T17:55:31.283 回答
1

可变参数在内部被解释为一个数组。因此,您应该事先将其转换为数组。同样在您的doIt方法中,您应该使用数组索引访问 things-s 元素。

于 2012-08-31T17:57:37.187 回答