java中的clone方法

java

//测试类  

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

回到顶部