要创建一个List,为什么Java不允许创建它们,然后逐个添加元素?Java为什么不允许“新列表<T>”?
这工作:
public static List<TrackedItem> create(List<Item> items)
{
TrackedItem[] arr = new TrackedItem[items.size()];
int i = 0;
for (Item item : items)
{
arr[i] = TrackedItem.createOrUpdate(item);
i++;
}
return java.util.Arrays.asList(arr);
}
这不起作用(tracked.add()
导致NullPointerException
):
public static List<TrackedItem> create(List<Item> items)
{
List<TrackedItem> tracked = java.util.Collections.emptyList();
for (Item item : items)
{
tracked.add(TrackedItem.createOrUpdate(item));
}
return tracked;
}
你确定你的代码会抛出一个NPE吗?因为它应该抛出'UnsupportedOperationException',因为'emptyList()'的返回值不能被修改(按设计)。 – 2010-07-05 13:06:19
它抛出一个'NullPointerException'?真?它应该抛出一个'UnsupportedOperationException':http://java.sun.com/javase/6/docs/api/java/util/List.html#add(E) – 2010-07-05 13:06:48
@Joachim:Jinx! – 2010-07-05 13:07:51