我不确定以下内容是否会导致深拷贝或浅拷贝?
public void viewImages(final String[] instancesFilename) {
String[] instances = (String[])instancesFilename.clone();
}
是否有一种简单而快速的方法来深度复制字符串数组?
答案 0 :(得分:14)
Java中的字符串是可以改变的(不能改变它们的值)。因此,复制字符串时,深拷贝和浅拷贝之间没有可检测到的差异。
只是为了进一步参考:副本会很浅但这不应该是一个问题,因为字符串是可以改变的。
哦,有趣的事实:无法使用克隆方法克隆字符串,因此如果您尝试使用克隆方法对字符串进行深层复制,则会出现CloneNotSupportedException。
答案 1 :(得分:2)
数组类也有copyOf方法。这通常是我用来创建数组副本的方法。继承人和所有差异的解释:http://forum.codecall.net/topic/49450-copying-arrays/
答案 2 :(得分:1)
这是一个有趣的article discussing using serialization to make deep copies。
调用图中的对象确实需要支持序列化,但是在3层应用程序的许多业务类型中,必然存在这种情况。
本文提供了深度复制和浅拷贝的讨论,并附有一些图表。