美文网首页
Java深拷贝与浅拷贝

Java深拷贝与浅拷贝

作者: jimmyinfo | 来源:发表于2018-10-11 11:36 被阅读53次

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;

}

}

相关文章

  • java 对象的拷贝

    拷贝:即复制 对象拷贝:即对象复制 java 对象拷贝分类:浅拷贝、深拷贝 java 对象的浅拷贝和深拷贝针对包含...

  • Java基础 - 深拷贝和浅拷贝

    Java 的深拷贝和浅拷贝 什么是深拷贝、浅拷贝 (深克隆、浅克隆)? 在 Java 中,数据类型分为 基本数据类...

  • Java------List的深拷贝与浅拷贝

    Java的浅拷贝(Shallow Copy)、深拷贝(Deep Copy)。 浅拷贝(Shallow Copy) ...

  • java中的深拷贝和浅拷贝

    简单记录一下java中的深拷贝和浅拷贝,深拷贝和浅拷贝只是针对对象而言的. 1 深拷贝代码 2 浅拷贝代码 3 测...

  • JS中的深拷贝与浅拷贝

    知乎:js中的深拷贝和浅拷贝? 掘金: js 深拷贝 vs 浅拷贝 前言 首先深拷贝与浅拷贝只针对 Object,...

  • Java的浅拷贝与深拷贝

    Java的浅拷贝与深拷贝 一、概念 浅拷贝浅拷贝仅仅复制所考虑的对象(包括对象中的基本变量),而不复制它所引用的对...

  • 认识js下的浅拷贝与深拷贝

    浅拷贝与深拷贝 首先深拷贝和浅拷贝只针对像 Object, Array 这样的复杂对象的。简单来说,浅拷贝只拷贝一...

  • iOS深拷贝(MutableCopy)与浅拷贝(Copy)的区别

    深拷贝和浅拷贝的概念 iOS中有深拷贝和浅拷贝的概念,那么何为深拷贝何为浅拷贝呢?浅拷贝:浅拷贝并不拷贝对象本身,...

  • Objective-C中的浅拷贝和深拷贝

    Objective-C中的浅拷贝和深拷贝IOS开发之深拷贝与浅拷贝(mutableCopy与Copy)详解iOS ...

  • 深拷贝和浅拷贝

    干货!深拷贝和浅拷贝的区别 深拷贝才是拷贝,浅拷贝就是Retain Copy与Retain的区别 Copy: 根据...

网友评论

      本文标题:Java深拷贝与浅拷贝

      本文链接:https://www.haomeiwen.com/subject/mjfbaftx.html