zoukankan      html  css  js  c++  java
  • 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;  
        }  
    }  
    

    ==============================================================================

    本博客已经废弃,不在维护。新博客地址:http://wenchao.ren


    我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
    们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
    实我是一个程序员

    ==============================================================================
  • 相关阅读:
    io学习
    asp.net文件上传进度条研究
    asp.net页面中的Console.WriteLine结果如何查看
    谨慎跟随初始目的不被关联问题带偏
    android 按钮特效 波纹 Android button effects ripple
    安卓工作室 日志设置
    安卓工作室 文件浏览器 android studio File browser
    一个新的Android Studio 2.3.3可以在稳定的频道中使用。A new Android Studio 2.3.3 is available in the stable channel.
    新巴巴运动网上商城 项目 快速搭建 教程 The new babar sports online mall project quickly builds a tutorial
    码云,git使用 教程-便签
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2070613.html
Copyright © 2011-2022 走看看