H
hyena
hi,
I just came across this situation that the cloned array linked to the
original array and changes made to the clone also applied to the original
one. I do not think I understand fully the description of deep clone/shallow
clone concept and got a bit confused here.
code:
private int[][] decode(int[][] tr_seq) {
// translate the sequces into real travel times
int[][] tt = (int[][]) tr_seq.clone();
for(int i =0; i < tt.length; i++){
for(int j =0; j < tt[0].length; j++){
tt[j] = 100;
}
}
return tt;
}
tr_seq was changed after this method was called. I was assuming a clone is
apart from the original object and has its own reference address. isn't it?
from java document ,
"Creates and returns a copy of this object. The precise meaning of "copy"
may depend on the class of the object. The general intent is that, for any
object x, the expression:
x.clone() != xwill be true".
this statement does not agree on this example.
could someone shed some light on this? Thanks.
Sun
I just came across this situation that the cloned array linked to the
original array and changes made to the clone also applied to the original
one. I do not think I understand fully the description of deep clone/shallow
clone concept and got a bit confused here.
code:
private int[][] decode(int[][] tr_seq) {
// translate the sequces into real travel times
int[][] tt = (int[][]) tr_seq.clone();
for(int i =0; i < tt.length; i++){
for(int j =0; j < tt[0].length; j++){
tt[j] = 100;
}
}
return tt;
}
tr_seq was changed after this method was called. I was assuming a clone is
apart from the original object and has its own reference address. isn't it?
from java document ,
"Creates and returns a copy of this object. The precise meaning of "copy"
may depend on the class of the object. The general intent is that, for any
object x, the expression:
x.clone() != xwill be true".
this statement does not agree on this example.
could someone shed some light on this? Thanks.
Sun