将列表作为varargs传入



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

有没有一种方法可以将List作为varargs传入?

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

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

变量参数在内部被解释为数组。因此,您应该先将其转换为数组,然后再进行处理。此外,在doIt方法中,您应该使用数组索引访问things-s元素。

最新更新