我有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
答案 0 :(得分:97)
只需通过things.toArray(new Thing[things.size()])
。
答案 1 :(得分:1)
可变参数在内部被解释为数组。所以你应该在转发前将它转换为数组。同样在您的doIt
方法中,您应该使用数组索引访问thing-s元素。