Re: confusion of array clone() method
- From: "Bob" <willitheowl@xxxxxxxxx>
- Date: 28 Nov 2006 05:16:31 -0800
you can find out what clone() does to arrays by adding an assertion:
int[][] tt = (int[][]) tr_seq.clone();
assert( tt != tr_seq );
if clone doesn't do the job for arrays, you can write your own
copy_array static method or see if there already is such a thing in the
Java API.
hyena wrote:
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[i][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
.
- References:
- confusion of array clone() method
- From: hyena
- confusion of array clone() method
- Prev by Date: Re: lost in XML
- Next by Date: Re: Can't send email from J2ME.
- Previous by thread: confusion of array clone() method
- Next by thread: Re: confusion of array clone() method
- Index(es):
Relevant Pages
|