可以看得出,浅拷贝后,writer1 和 writer2 引用了不同的对象,但值是相同的,说明拷贝成功。之后,修改了 writer2 的 name 字段
我们再为 Writer 类增加一个自定义的引用类型字段 Book,先来看定义:
class Book {
private String bookName;
private int price;
// getter/setter 、构造方法、toString()
}
class Writer implements Cloneable{
private int age;
private String name;
private Book book;
// getter/setter 、构造方法、toString()
}
测试类:
class TestClone {
public static void main(String[] args) throws CloneNotSupportedException {
Writer writer1 = new Writer(18,"二哥");
Book book1 = new Book("编译原理",100);
writer1.setBook(book1);
Writer writer2 = (Writer) writer1.clone();
System.out.println("浅拷贝后:");
System.out.println("writer1:" + writer1);
System.out.println("writer2:" + writer2);
Book book2 = writer2.getBook();
book2.setBookName("永恒的图灵");
book2.setPrice(70);
System.out.println("writer2.book 变更后:");
System.out.println("writer1:" + writer1);
System.out.println("writer2:" + writer2);
}
}