0
Deep copy of an array
I have a method where I'm trying to return a deep copy of an array . I want to use clone. But I'm not sure if this is the way to go. Will this code do the job?? Any suggestions would be appreciated https://code.sololearn.com/c55uc0752qNo/?ref=app
1 Answer
+ 1
it works this way for String[] and Java standard types
public String[] getValues(){
return values.clone();
}
but not for custom classes like here
import java.util.Arrays;
class ObjString {
String value;
public String toString() { return value; }
}
public class CopyValues {
private ObjString[] values;
CopyValues( String[] data) {
values = new ObjString[data.length];
for (int i=0; i < data.length; i++) {
values[i] = new ObjString();
values[i].value = data[i];
}
}
public ObjString[] getValues() {
return values.clone();
}
public static void main(String[] args) {
String[] data = {"AA","BB","CC","DD","EE"};
CopyValues p = new CopyValues(data);
ObjString[] aCopy = p.getValues();
//test
p.values[0].value = "XX";
System.out.println( Arrays.toString(p.values) ); // XX changed
System.out.println( Arrays.toString(aCopy) ); // XX too, because it is same object
}
}