publicclassPersonimplementsCloneable{ private Address address; // 省略构造函数、Getter&Setter方法 @Override public Person clone(){ try { Person person = (Person) super.clone(); return person; } catch (CloneNotSupportedException e) { thrownew AssertionError(); } } }
测试
1 2 3 4 5
Person person1 = new Person(new Address("武汉")); Person person1Copy = person1.clone(); // true System.out.println(person1.getAddress() == person1Copy.getAddress());
这里我们简单对 Person 类的 clone() 方法进行修改,连带着要把 Person 对象内部的 Address 对象一起复制。
1 2 3 4 5 6 7 8 9 10 11
@Override public Person clone(){ try { Person person = (Person) super.clone(); person.setAddress(person.getAddress().clone()); return person; } catch (CloneNotSupportedException e) { thrownew AssertionError(); } }
测试
1 2 3 4 5
Person person1 = new Person(new Address("武汉")); Person person1Copy = person1.clone(); // false System.out.println(person1.getAddress() == person1Copy.getAddress());