java中的clone方法
//测试类public class Exec {
public static void main(String args[]) {
// 新建图书集合类变量,修改部分图书信息
BookCollection bc1 = new BookCollection(10);
bc1.getBooks()[0].setBookID(100);
bc1.getBooks()[1].setISBN("9601000980");
// 使用clone方法实现类变量复制
BookCollection bc2 = (BookCollection) bc1.clone();
System.out.println(bc2.getBooks()[0].getBookID());
System.out.println(bc2.getBooks()[1].getISBN());
}
}
// 支持类变量复制的图书集合类
class BookCollection implements Cloneable {
// 存储所有图书类变量的数组
private Book[] books = null;
// 图书总数
private int number;
// 默认构造函数
public BookCollection() {
}
// 该构造函数按照指定数量初始化图书类变量数组
public BookCollection(int number) {
this.number = number;
books = new Book[number];
// 每个图书类变量的ID都是一个从1开始连续分配的整数
for (int i = 0; i < books.length; i++) {
books[i] = new Book(i + 1);
}
}
// 支持类变量复制的重要方法
public Object clone() {
// 新建图书集合类变量
BookCollection result = new BookCollection();
// 将新建类变量的所有图书信息设置与当前图书信息相同
result.books = new Book[number];
for (int i = 0; i < number; i++) {
result.books[i] = (Book) books[i].clone();
}
return result;
}
// 图书数组的读取函数
public Book[] getBooks() {
return books;
}
}
// 图书类
class Book implements Cloneable {
// 图书ID号
private int bookID;
// 图书的ISBN号
private String ISBN;
// 图书的标题
private String title;
// 默认构造函数
public Book() {
}
// 该构造函数只对图书ID进行初始化
public Book(int bookID) {
setBookID(bookID);
}
// 该构造函数对图书ID号,ISBN号和标题进行初始化
public Book(int bookID, String ISBN, String title) {
setBookID(bookID);
setISBN(ISBN);
setTitle(title);
}
// 图书ID的读取函数
public int getBookID() {
return bookID;
}
// 图书ID的设置函数
public void setBookID(int bookID) {
this.bookID = bookID;
}
// ISDN号的读取函数
public String getISBN() {
return ISBN;
}
// ISDN号的设置函数
public void setISBN(String ISBN) {
this.ISBN = ISBN;
}
// 图书标题的读取函数
public String getTitle() {
return title;
}
// 图书标题的设置函数
public void setTitle(String title) {
this.title = title;
}
// 支持类变量复制的重要方法
public Object clone() {
Object obj = null;
try {
// 直接调用Object类提供的clone方法复制当前类变量
// 如果当前类变量有其他类变量的引用属性,则不应该使用此方法,而应写为
// obj = new Book();
// ((Book)obj).setBookID(bookID);
// ((Book)obj).setISBN(ISBN);
// ((Book)obj).setTitle(title);
obj = super.clone();
} catch (Exception e) {
System.out.println(e.getMessage());
}
return obj;
}
}
以上是 java中的clone方法 的全部内容, 来源链接: utcz.com/z/393906.html