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 Antwort
+ 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
	}
}



