• Java clone方法的使用


    浅克隆

    Person p2 = (Person) p1.clone();
    

    clone()方法使用后得到p2p2p1指向不同的地址。但是如果p1中的属性是引用类型,那么不再对这个引用类型进行复制,而止于这个引用。

    clone类

    Ojbect类中clone()protected修饰,因此需要扩权。在Person中重写这个方法(并抛出异常)。同时需要实现cloneable接口,否则将报错。

    代码

    Person类

    public class Person implements Cloneable{
    
        private String name;
        private int age;
        private Addr addr;
    
        public String getName() {
            System.out.println(this+this.name);
            return name;
        }
        public String getAddr() {
            System.out.println(this+addr.city);
            return addr.city;
        }
        public void setAddr(String city) {
            this.addr.city = city;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public void setName(String name) {
            this.name = name;
        }
        @Override
        public Object clone() throws CloneNotSupportedException {
            return super.clone();
        }
    }
    

    其中Person中的地址,是Addr类型:

    public class Addr {
        public String city;
    }
    

    Test类:

    public class Test1 {
    
        public static void main(String[] args) {
            Person p1 = new Person();
            p1.setAge(11);
            p1.setName("xiaoming");
            p1.setAddr("南京");
            p1.getName();
            p1.getAddr();
            Person p2=(Person) p1.clone();
            p2.getName();
            p2.getAddr();
        }
    }
    

    得到结果,p1p2指定不同的区域,但是他们的addr指向同一区域。

  • 相关阅读:
    yocto添加层简介
    ARM Linux 3.x的设备树(Device Tree)
    Linux device tree 简要笔记
    git 分支( branch ) 的基本使用
    Git 常用命令速查表(三)
    Git 常用命令详解(二)
    CentOS Linux安装python3
    R语言统计学习-1简介
    cnblog中添加数学公式支持
    我们数学中常用的自然常数e代表什么?看完长知识了!
  • 原文地址:https://www.cnblogs.com/heenhui2016/p/10964576.html
Copyright © 2020-2023  润新知