Kamis, 10 Februari 2011

Method clone()

int x=0;
int temp=x;
temp=temp+1;
//menghasilkan x=0, temp=1 
Pertanyaan 1:
Gimana caranya supaya x[0] pada potongan program berikut tidak ikut berubah menjadi 1?
int[] x={0};
int[] temp=x;
temp[0]=temp[0]+1
//Hasilnya x[0]=1,temp[0]=1 
Solusi: gunakan method clone()
int[] x={0};
int temp[]=(int[]) x.clone();
temp[0]=temp[0]+1;
System.out.println(x[0]);
System.out.println(temp[0]);
//Hasilnya x[0]=0,temp[0]=1 
Pertanyaan 2:
Gimana caranya supaya x[0][0]=0 pada potongan program berikut tidak berubah menjadi 1?
int[][] x={{0}};
int[][] temp=(int[][]) x.clone();
temp[0][0]=temp[0][0]+1;
System.out.println(x[0][0]);
System.out.println(temp[0][0]);
//hasilnya x[0][0]=1 dan temp[0][0]=1
Solusi:
Belum tau... :-?
Detailnya:
  • clone untuk array itu shallow copy kalau element arraynya object
  • clone untuk array itu deep copy kalau element arraynya primitif
  • clone untuk object lain bisa shallow copy, bisa deep copy tergantung bagaimana implementasi clonenya oleh programmer.

Tidak ada komentar:

Posting Komentar