基本的に、場所の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
の概念全体に慣れていない
これについて最も簡単な方法は何でしょうか?今はまっすぐ考えていないように感じます。
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()]));
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
この投稿は記事として書き直されました here 。
Java 8の場合:
List<WorldLocation> locations = new ArrayList<>();
.getMap(locations.stream().toArray(WorldLocation[]::new));
Guavaを使用した受け入れられた回答の短縮版:
.getMap(Iterables.toArray(locations, WorldLocation.class));
toArrayを静的にインポートすることでさらに短縮できます:
import static com.google.common.collect.toArray;
// ...
.getMap(toArray(locations, WorldLocation.class));
できること:getMap(locations.toArray(new WorldLocation[locations.size()]));
またはgetMap(locations.toArray(new WorldLocation[0]));
またはgetMap(new WorldLocation[locations.size()]);
ide警告を削除するには、@ SuppressWarnings( "unchecked")が必要です。