创建新数组

时间:2013-09-02 16:19:17

标签: java arrays

问题很简单。是否有任何简单快捷的方法可以创建(新引用)数组,还是必须手动完成?

示例:

Collection<A> c = new ArrayList<A>();
c.add(new A());
c.add(new A());
c.add(new A());

A[] a1 = c.toArray(new A[0]);
System.out.println("a1: " + Arrays.toString(a1));
System.out.println("c: " + c);

A[] a2 = Arrays.copyOf(a1, a1.length);
System.out.println("a2: " + Arrays.toString(a2));

所有创建的数组都具有相同的引用。我希望数组中包含与旧元素具有相同内容的新元素。旧元素的副本。

答案是:How do you make a deep copy of an object in Java?。现在我看到这个问题是重复的。

1 个答案:

答案 0 :(得分:1)

如果要创建数组的副本(意思是:使用对其每个元素的新创建的引用),有几种选择,包括:

  • 序列化/反序列化数组(请参阅Apache的SerializationUtils
  • 手动复制每个元素(以及递归的元素属性)
  • 明确使用反射
  • 使用复制构造函数

......等等。查看堆栈溢出,有several posts讨论主题。