一尘不染

如何将ArrayList传递给varargs方法参数?

java

基本上我有一个ArrayList的位置:

ArrayList<WorldLocation> locations = new ArrayList<WorldLocation>();

在此之下,我调用以下方法:

.getMap();

getMap()方法中的参数为:

getMap(WorldLocation... locations)

我遇到的问题是我不确定如何在整个locations方法列表中传递该方法。

我试过了

.getMap(locations.toArray())

但是getMap不接受,因为它不接受Objects []。

现在,如果我使用

.getMap(locations.get(0));

它会完美地工作…但是我需要以某种方式传递所有位置…我当然可以继续添加locations.get(1), locations.get(2)等等,但是数组的大小会有所不同。我只是不习惯整个概念ArrayList

最简单的方法是什么?我觉得我现在不在考虑。


阅读 271

收藏
2020-09-08

共1个答案

一尘不染

源文章:将列表作为参数传递给vararg方法


使用toArray(T[] arr)方法。

.getMap(locations.toArray(new WorldLocation[locations.size()]))

toArray(new WorldLocation[0])也可以,但是您会无故分配零长度的数组。)


这是一个完整的示例:

public static void method(String... strs) {
    for (String s : strs)
        System.out.println(s);
}

...
    List<String> strs = new ArrayList<String>();
    strs.add("hello");
    strs.add("wordld");

    method(strs.toArray(new String[strs.size()]));
    //     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
2020-09-08