问题很简单。是否有任何简单快速的方法来创建新(新引用)数组,或者必须手动完成?
示例:
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? 。现在我发现这个问题是重复的。
最佳答案
如果您想创建数组的深层副本(意思是:使用新创建的对其每个元素的引用),有多种选择,包括:
- 序列化/反序列化数组(请参阅 Apache 的
SerializationUtils
) - 手动复制每个元素(以及该元素的属性,递归地)
- 显式使用反射
- 使用复制构造函数
关于java - 创建新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18577282/