一.简介
Clone方法是可以创建对象的一种方式。使用clone方法复制对象。由于clone方法将最终将调用JVM中的原生方法完成复制也就是调用底层的c++代码,所以一般使用clone方法复制对象要比新建一个对象然后逐一进行元素复制效率要高。
二.举例使用
Java Bean
public class Student implements Cloneable {
private String name;
private String sex;
private String age;
public Student(){
}
public Student(String name,String sex,String age){
this.name=name;
this.sex=sex;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public Object clone() {
Student student=null;
try {
student= (Student) super.clone();
student.name=this.name;
student.sex=this.sex;
student.age=this.age;
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return student;
}
public String toString(){
return "姓名:"+name+" 性别:"+sex+" 年龄:"+age;
}
}
代码调用
private void CloneableMethod(){
Student student=new Student();
student.setAge("28");
student.setName("张三");
student.setSex("男");
Student clonestudent=null;
clonestudent= (Student) student.clone();
String result1="原有对象\n姓名:"+student.getName()+"\n性别:"+student.getSex()+"\n年龄:"+student.getAge();
Log.d("TAG","result1----:"+result1);
Log.d("TAG","------------------------------------------------------------------------------");
String result2="克隆对象\n姓名:"+clonestudent.getName()+"\n性别:"+clonestudent.getSex()+"\n年龄:"+clonestudent.getAge();
Log.d("TAG","result2----:"+result2);
}
结果
result1----:原有对象
姓名:张三
性别:男
年龄:28
------------------------------------------------------------------------------
result2----:克隆对象
姓名:张三
性别:男
年龄:28