复制静态列表的建议

时间:2014-02-04 11:48:24

标签: java android list static

public class MainActivity extends Activity {
    static List<Towar> chosen_items;

......
}

public class ItemOrder implements Serializable {
    static List<Item> item_ordered;

....
}

我正在尝试这样做:

ItemOrder.item_ordered = new ArrayList<Item>(MainActivity.chosen_items.size());

Collections.copy(ItemOrder.item_ordered, MainActivity.chosen_items);

我想将MainActivity.chosen _项目中的列表复制到ItemOrder.item _ ordered,我有这样的错误:

 java.lang.IndexOutOfBoundsException: destination.size() < source.size(): 0 < 1

1 个答案:

答案 0 :(得分:2)

new ArrayList(10).size()将返回0. 10是initialCapacity,而不是大小。

你可以这样做:

ItemOrder.item_ordered = new ArrayList<Item>(MainActivity.chosen_items);

或者这个:

ItemOrder.item_ordered = Arrays.asList(new Item[MainActivity.chosen_items.size()]);
Collections.copy(ItemOrder.item_ordered, MainActivity.chosen_items);

顺便说一句,你对静态列表的使用有一种设计气味。