Cloneable的使用,在我看来就是为了当你创建两个对象的时候,虽然两个对象的所表达的内容一样,但引用不一样,通俗的来说就是当你改变另一个对象的内容时,不会引起另一个对象内容的改变,也就是说不会让两个对象指向同一个引用。
创建一个简单类
public class Person implements Cloneable{
private String name;
private int age;
public Person(String name,int age) {
setName(name);
setAge(age);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
public class MainTwo {
public static void main(String[] args) throws CloneNotSupportedException {
Person person1 = new Person("li",12);
Person person2 = (Person) person1.clone();//需要强转,clone时Object
System.out.print(" p1 = " + person1.getAge());
System.out.print(" p2 = " + person2.getAge());
System.out.println();
person1.setAge(19);
System.out.print(" p1 = " + person1.getAge());
System.out.print(" p2 = " + person2.getAge());
//处理异常的两种方式
/* try {
Person person2 = (Person) person1.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}*/
}
}