克隆的目的:1给一个类的实例进行初始化 2在引用时不想改变原引用的值
实现克隆的步骤:
1. 实现克隆接口
2. 重写public Object clone()方法
重写克隆方法时注意:如果包含引用类,要将引用类一样克隆。如果要共享当然可以不用克隆。
例子:
类A:
class A implements Cloneable{
public long time = 100;
public Date d = new Date();
public long getTime(){
return time;
}
public void printTime(){
System.out.printf("现在的数量是:%d,时间是%d",time,d.getMonth()+1);
}
@Override
protected Object clone(){
A a=null;
try {
a=(A) super.clone();
a.d = (Date)d.clone();
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return a;
}
测试用:
A a =new A();
System.out.println(a.getTime()+" "+(a.d.getMonth()+1));
change((A)a.clone());
a.printTime();
change方法:
public static void change(A a) {
a.time = 10;
a.d.setMonth(9);
}
输出结果:
100 1
现在的数量是:100,时间是1