Java深拷贝与浅拷贝

import com.alibaba.fastjson.JSON;

import lombok.Getter;

import lombok.Setter;

import lombok.Data;

import lombok.extern.slf4j.Slf4j;

import java.io.Serializable;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

@Setter

@Getter

@Slf4j

public class Studentextends BaseDtoimplements Serializable, Cloneable{

    private Integerid;

    private Stringname;

    private Integerage;

    private Citycity;

    private List<Integer> list =new ArrayList<>();

    public Objectclone() {

        //浅拷贝

        try {

            // 直接调用父类的clone()方法

            return super.clone();

        } catch (CloneNotSupportedException e) {

            return null;

        }

}


    public static void main(String[] args) throws CloneNotSupportedException{

        Student s1 =new Student();

        s1.setAge(10);

        s1.setId(1);

        s1.setName("1111111111111111");

        s1.getList().add(1);

        City city =new City();

        city.setCityCode(55555);

        city.setName("Unkown");

        s1.setCity(city);

        log.info("s1 is:{}", JSON.toJSONString(s1));

        String content = JSON.toJSONString(s1);

        Student s11 = JSON.parseObject(content, Student.class);

        s11.setId(11);

        s11.setAge(11);

        s11.setName("000000000000000");

        s11.getList().add(11);

        log.info("s11 is:{}", JSON.toJSONString(s11));

        log.info("s1 is:{}", JSON.toJSONString(s1));

        content = JSON.toJSONString(s1);

        Student s2 =(Student) s1.clone();

        s2.setId(2);

        s2.setAge(22);

        s2.setName("22222222222222");

        s2.getList().add(2);

        s2.getCity().setName("Beijing");

        log.info("s2 is:{}", JSON.toJSONString(s2));

        log.info("s1 is:{}", JSON.toJSONString(s1));

        content = JSON.toJSONString(s1);

        Student s3 = JSON.parseObject(content, Student.class);

        s3.setId(3);

        s3.setAge(33);

        s3.setName("333333333333");

        s3.getList().add(3);

        log.info("s3 is:{}", JSON.toJSONString(s3));

        Student s4 =(Student) s1.clone();

        s4.setId(4);

        s4.setAge(44);

        s4.setName("44444444444444");

        s4.getList().add(4);

        log.info("s4 is:{}", JSON.toJSONString(s4));

        log.info("s2 is:{}", JSON.toJSONString(s2));

        log.info("s1 is:{}", JSON.toJSONString(s1));

    }

@Data

public class City{

    private IntegercityCode;

    private Stringname;

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 浅拷贝是指拷贝对象时仅仅拷贝对象本身(包括对象中的基本变量),而不拷贝对象包含的引用指向的对象。深拷贝不仅拷贝对象...
    Sandy_678f阅读 662评论 0 0
  • 废话不多说,自己进入今天的主题 1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:...
    传奇内服号阅读 2,432评论 1 31
  • 大约是在我读小学一二年级的时候,家里还没有冰箱,炎热的夏天,老蔡买回一只西瓜,就放在装满水厨房的洗碗槽里泡着,等吃...
    菜小齐阅读 265评论 0 1
  • 有时候喜欢不是一种错,只是我们口是心非,错过了太多,在最美的年纪,就该奋不顾身的追寻,哪怕失败,也有回忆记录...
    幽柯阅读 421评论 0 2
  • 灯光辉煌的城市,从来不缺彻夜不眠的人。 据中国睡眠协会统计,我国有3亿的成年人存在睡眠障碍。 失眠,或许是因为心里...
    物道阅读 1,381评论 3 21