繁体   English   中英

ArrayList()的深层副本

[英]deep copy of ArrayList()

我有一个ArrayList,我需要一个值的副本,而不是引用。

到目前为止我尝试过的:

ArrayList<AudioInputStream> copy = new ArrayList<AudioInputStream>(original);
Collections.copy(copy, original);

我想这些副本称为浅拷贝,因为AudioInputStream是一个Object 我读到一个简单的深层复制方法是使用构造函数,但我无法弄清楚如何在我的情况下执行它。

当我们使用构造函数谈论深层复制时,我们必须创建这样的东西:

public class Foo {
  public Foo(Foo aFoo) {
     //your deep copy here
  }
}

然后,很容易遍历列表并创建新对象。

List<Foo> newList = /* whatever */;
for(Foo foo : fooLists ) {
  newList.add(new Foo(foo));
}

但是, AudioInputStream不允许这样做,而且,克隆InputStream的事实非常奇怪。
你能从同一个源创建另一个InputStream吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM