0

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

例子:

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));

所有创建的数组都具有相同的引用。我想要具有与旧元素相同内容的新元素的数组。旧元素的副本。

答案是:如何在 Java 中制作对象的深层副本?. 现在我看到这个问题是重复的。

4

1 回答 1

1

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

  • 序列化/反序列化数组(参见 Apache 的SerializationUtils
  • 手动复制每个元素(以及该元素的属性,递归)
  • 显式使用反射
  • 使用复制构造函数

... 等等。查看堆栈溢出,有几个 帖子讨论了这个主题。

于 2013-09-02T16:28:03.017 回答