The Well-Grounded Java Developerの114ページのこのコードサンプルでは、最後の行は次のとおりです。
Update[] updates = lu.toArray(new Update[0]);
注が含まれています:ゼロサイズの配列を渡し、割り当てを保存します
List<Update> lu = new ArrayList<Update>();
String text = "";
final Update.Builder ub = new Update.Builder();
final Author a = new Author("Tallulah");
for (int i=0; i<256; i++) {
text = text + "X";
long now = System.currentTimeMillis();
lu.add(ub.author(a).updateText(text).createTime(now).build());
try {
Thread.sleep(1);
} catch (InterruptedException e) {
}
}
Collections.shuffle(lu);
Update[] updates = lu.toArray(new Update[0]);
この節約は正確にどのような割り当てですか?
List#toArray(T [] a)のjavadocには、次のように記載されています。
リストが指定された配列に収まる場合は、リストが返されます。それ以外の場合は、指定された配列のランタイムタイプとこのリストのサイズで新しい配列が割り当てられます。
これは私が覚えていることです。渡した配列がtoArray(T[] a)
リスト内のすべてに収まらない場合は、新しい配列が割り当てられます。明らかに、リストには256個の要素があり、サイズ0の配列には収まらないため、メソッド内に新しい配列を割り当てる必要があります。
それで、そのメモは間違っていますか?それとも他に何か意味がありますか?