有人可以帮我复印吗?

时间:2012-07-11 15:49:36

标签: java

我正在尝试深度复制,因为我们的教授告诉我们这样做。他给了我们一些代码片段但是一旦我用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();
    }

2 个答案:

答案 0 :(得分:3)

深层复制是对象的副本,除了复制对象的各个字段外,还会遍历这些字段引用的所有其他对象并复制它们。这可确保如果通过一个副本修改其中一个对象,则另一个副本不受影响。

此代码通过首先创建一个新数组,然后遍历它,制作数组中引用的每个字符串的副本,并在新的数组中引用新复制的字符串,来生成original的深层副本。数组的新副本。或者至少,如果不是其他人提到的错字,它会怎么做。

请注意,在这种特殊情况下,这是毫无意义的,因为Java字符串是不可变的,因此不存在修改引用对象的危险。

答案 1 :(得分:1)

您的代码无效的原因是:

String [] result = new String(original.length);  

result是一个String的数组,但您尝试实例化一个String。 JVM抛出的错误应该指向你这一行。

然而,这与深度复制无关。为此,请看一下

Deep copy, shallow copy, clone