5

我不确定以下是否会导致深拷贝或浅拷贝?

public void viewImages(final String[] instancesFilename) {

    String[] instances = (String[])instancesFilename.clone();    
}

有没有一种简单快速的方法来深度复制字符串数组?

4

3 回答 3

14

Java 中的字符串是不可变的(不能改变它们的值)。因此,在复制字符串时,深拷贝和浅拷贝之间没有可检测到的区别。

只是为了进一步参考:副本会很浅,但这应该不是问题,因为字符串是不可变的。

哦,有趣的事实:不能用 clone 方法克隆字符串,所以如果你尝试用 clone 方法对字符串进行深拷贝,你会得到一个 CloneNotSupportedException。

于 2012-04-12T14:16:22.333 回答
2

数组类也有 copyOf 方法。这通常是我用来创建数组副本的方法。所有差异的继承和解释:http: //forum.codecall.net/topic/49450-copying-arrays/

于 2012-04-12T14:34:20.373 回答
1

这是一篇有趣的文章,讨论了使用序列化进行深度复制

调用图中的对象确实需要支持序列化,但是在 3 层应用程序的许多业务类型中,这种必要性是存在的。

文章通过一些图表提供了对深拷贝和浅拷贝的讨论。

于 2012-10-11T15:50:28.953 回答