// shallow copy example
public class a
{
public static void main(String[] args) throws CloneNotSupportedException
{
b x = new b(2);
System.out.println(x.i[0]); // previous value for object x
System.out.println(x.k);
b y =(b)x.clone(); // y shallow clone of object x
y.i[0] = 10; y.k = 999; // changed values in object y
System.out.println(y.i[0]); // values of y after change
System.out.println(y.k);
System.out.println(x.i[0]); // values of x after change
System.out.println(x.k);
System.out.println(x.getClass() == y.getClass()); // both objects belong to same class
System.out.println(x == y); // both objects are different, they are not the same
}
}
class b implements Cloneable
{
public int i[] = new int[1];
int k;
public Object clone() throws CloneNotSupportedException
{
return super.clone();
}
b(int j)
{
super();
i[0] = j;
k = j + 2;
}
}
/*output
2
4
10
999
10
4
true
false
*/
//*********************************************************************
//deep copy example
public class a
{
public static void main(String[] args) throws CloneNotSupportedException
{
b x = new b(2);
System.out.println(x.i[0]); // object x values before change
System.out.println(x.k);
b y = (b)x.clone(); // deep clone y of object x
System.out.println(y.i[0]); // values of object y
System.out.println(y.k);
System.out.println(x.i[0]); // values of object x after changing the values of the members in object y in clone method
System.out.println(x.k);
System.out.println(x.getClass() == y.getClass());
System.out.println(x==y);
}
}
class b implements Cloneable
{
public int i[] = new int[1];
int k;
public Object clone()throws CloneNotSupportedException
{
b t = new b(6);
return t;
}
b(int j)
{
i[0] = j;
k = j+2;
}
}
/*
2
4
6
8
2
4
true
false
*/
我已經寫的例子,請看看我離開了anything.I不得不放棄把它演示,並希望它能夠爲possible.Do一樣簡單,讓我知道我能否讓它變得更簡單。 我已經提供引號,無論他們改變了值或對象被克隆。例子
演示應該很漂亮;請始終縮進。 –
ok lemme編輯.. – Nav
可能更好張貼在http://codereview.stackexchange.com –