java——实现浅克隆(实际上是Object类的clone()方法)
1,实现克隆包括两个动作
(1):在堆内存中创建同一个类型下的新对象
(2):将原先的对象的所有成员变量的值,复制一份,分别赋值给新的对象;但是,成员变量的类型有要求,一定要是基本数据类型8(种)+String(特殊的引用类型);换句话说,其他引用,不再clone,直接引用相同的地址值。
【与之不同的是深克隆:无论成员变量是否为引用类型,所有的成员变量都复制一份已达到完全的克隆。(但是系统默认不支持,如果需要,需要程序员自己动手去做)】
2,实现浅克隆的步骤
(1):实现接口Cloneable(声明式接口,只有名字,没有抽象方法)
(2):重写object#clone()方法
(3):抛异常或者以try…catch的形式处理因为克隆而可能发生的异常
[首先需要明白:object类的clone()方法类型是protected,(也就是说clone()只能在Object这个类中使用)返回值类型是object,定义一个类的时候要实现克隆就必须实现Cloneable接口,重写clone方法,引用的时候,注意类型转换]
例如
++++++++++++++++++++++++++++++++
public class Student implements Cloneable{
private String name;
private String gender;
private int age;
private String school;
public Student() {
}
public Student(String name, String gender, int age, String school) {
this.name = name;
this.gender = gender;
this.age = age;
this.school = school;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", gender='" + gender + '\'' +
", age=" + age +
", school='" + school + '\'' +
'}';
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
+++++++++++++++++++++++++++++++
public class ObjectDemo {
public static void main(String[] args){
Student stu1=new Student(“jerry”,“male”,20,“轻工业”);
Student stu2=stu1;//两个对象指向了同一块内存空间
System.out.println(stu1);
System.out.println(stu2);
System.out.println(“stu1#hashCode=”+stu1.hashCode());
System.out.println(“stu2#hashCode=”+stu2.hashCode());
Student stu3=null;
try {
stu3=(Student) stu1.clone();
}catch (CloneNotSupportedException e){
e.printStackTrace();
}
System.out.println("==clone对象=");
System.out.println(stu3);
System.out.println(“stu3#hashCode=”+stu3.hashCode());
}
}
下一篇: 点评前端开发工具cortex安装使用方法