将列表作为varargs传递

时间:2012-08-31 17:53:05

标签: java android list variadic-functions

我有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>

有没有办法将列表作为varargs传递?

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

2 个答案:

答案 0 :(得分:97)

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

答案 1 :(得分:1)

可变参数在内部被解释为数组。所以你应该在转发前将它转换为数组。同样在您的doIt方法中,您应该使用数组索引访问thing-s元素。