• 6-2 对象克隆


    package interfacepage;
    
    import java.sql.Date;
    
    public class CloneTest {
    
        /**
         * @author:lixh
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            
            CloneModel cloneModel = new CloneModel();
            CloneModel cp =  cloneModel.clone();
            cp.setDate(Date.valueOf("2017-12-12"));
            
            System.out.println(cp.getDate());
            System.out.println(cloneModel.getDate());
            
    
            if (cloneModel instanceof Cloneable) {
                System.out.println("true");
            }
            
            
        }
        
        /**
         * 对象克隆
         * 
         * 1.克隆方法默认的是浅拷贝
         * 
         * 深拷贝与浅拷贝:
         * 深拷贝不仅拷贝对象的实例域,而且会拷贝对象的子对象
         * 
         * 浅拷贝的子对象是共享的,如果子对象类型是不可变的,或者对象值不变,是安全的,但是往往会变,例如:Date
         * 
         * 2.实现clone()方法必须实现 Cloneable 接口,不然会抛异常CloneNotSupportedException
         * 
         * 3.clone方法是Object的方法,而且是protected,实现clone方法时需要将方法声明为public,这样任何方法都能访问。
         * 不限于子类中才可以调用clone方法,不同包也可以调用。
         * 
         * 4.Cloneable接口是标记接口,里面不含任何方法,他的唯一作用是在类查询时使用instanceof
         */
    
    }
    package interfacepage;
    
    import java.sql.Date;
    
    public class CloneModel  implements Cloneable{
    
        private String name;
    
        private Date date = new Date(System.currentTimeMillis());
    
        private CloneModelSub sub;
        
        public CloneModel() {
            super();
        }
    
        public CloneModel(String name, Date date) {
            super();
            this.name = name;
            this.date = date;
        }
        
        
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Date getDate() {
            return date;
        }
    
        public void setDate(Date date) {
            this.date = date;
        }
    
        protected CloneModel clone(){
            CloneModel cModel = null;
            try {
                cModel = (CloneModel)super.clone();
                cModel.date = (Date)date.clone();
            } catch (CloneNotSupportedException e) {
                e.printStackTrace();
            }
            return cModel;
        }
        
    }
  • 相关阅读:
    使用BeanShell 对比取出来的值
    https 请求的端口是443 注意
    Jmeter录制App 请求是HTTPS的
    Charles-断点
    随手记--分配事件概率
    看日志有没有 出现错误的字段 (如 crash ) 查找app闪退
    学习的网站
    xss 攻击 sql 注入
    app的apk 安装的方法--adb--命令安装 (含把apk放某个文件夹,每次启动自己安装)
    把2列相加的方法
  • 原文地址:https://www.cnblogs.com/lxh520/p/8254177.html
Copyright © 2020-2023  润新知