我正在尝试深度复制,因为我们的教授告诉我们这样做。他给了我们一些代码片段但是一旦我用netbeans键入它,它就行不通了......
有人可以通过这些代码帮助我解释深层复制的概念吗?
int i;
String [] original = {"Aref","Ali","Emad","Sami"};
String [] result = new String(original.length);
for(i=0;i<original.length;i++){
result[i] = (String) original[i].clone();
}
答案 0 :(得分:3)
深层复制是对象的副本,除了复制对象的各个字段外,还会遍历这些字段引用的所有其他对象并复制它们。这可确保如果通过一个副本修改其中一个对象,则另一个副本不受影响。
此代码通过首先创建一个新数组,然后遍历它,制作数组中引用的每个字符串的副本,并在新的数组中引用新复制的字符串,来生成original
的深层副本。数组的新副本。或者至少,如果不是其他人提到的错字,它会怎么做。
请注意,在这种特殊情况下,这是毫无意义的,因为Java字符串是不可变的,因此不存在修改引用对象的危险。
答案 1 :(得分:1)
您的代码无效的原因是:
String [] result = new String(original.length);
result
是一个String
的数组,但您尝试实例化一个String
。 JVM抛出的错误应该指向你这一行。
然而,这与深度复制无关。为此,请看一下