package design.creator.prototype;

import java.util.ArrayList;

import java.util.List;/**

* 深度拷贝:*/

classDog implements Cloneable {intage;

String name;

List list;

Pojo pojo;publicDog(String tempName) {

name=tempName;

list= new ArrayList<>();

list.add(1);

list.add(2);

list.add(3);

pojo= newPojo();

pojo.setV1(111);

pojo.setV2("aa");

}public voidsetName(String name) {this.name =name;

}public intgetAge() {returnage;

}public void setAge(intage) {this.age =age;

}publicString getName() {returnname;

}publicList getList() {returnlist;

}public voidsetList(List list) {this.list =list;

}

@OverridepublicString toString() {return "Dog [age=" + age + ", name=" + name +

", list=" + list + "]" + ", pojo=" + pojo + "]";

}publicPojo getPojo() {returnpojo;

}public voidsetPojo(Pojo pojo) {

pojo=pojo;

}publicDog clone() {

Dog myDog= null;try{

myDog=(Dog) super.clone();

myDog.list=(List) ((ArrayList)myDog.list).clone();//想要调用其clone方法,必须1 implements Cloneable 2 对其重写clone

myDog.pojo =(Pojo) myDog.pojo.clone();

}catch(CloneNotSupportedException e) {

e.printStackTrace();

}returnmyDog;

}

}classPojo implements Cloneable{intv1;

String v2;public intgetV1() {returnv1;

}public void setV1(intv1) {this.v1 =v1;

}publicString getV2() {returnv2;

}public voidsetV2(String v2) {this.v2 =v2;

}

@OverridepublicString toString() {return "Pojo [v1=" + v1 + ", v2=" + v2 + "]";

}

@OverrideprotectedObject clone() throws CloneNotSupportedException {returnsuper.clone();

}

}public classPrototypeTest {public static voidmain(String[] args) {

Dog myDog= new Dog("热狗");

myDog.setAge(12);

Dog newDog=(Dog) myDog.clone();

System.out.println("myDog" +myDog );

System.out.println("newDog" +newDog );//myDog.ShowName();//newDog.ShowName();

myDog.setName("aaaaa");

myDog.setAge(33);

myDog.getList().clear();

myDog.getPojo().setV1(222);

myDog.getPojo().setV2("bbb");//myDog.ShowName();//newDog.ShowName();

System.out.println("myDog" +myDog );

System.out.println("newDog" +newDog );

}

}

java json clone_再谈java clone 以及 浅/深拷贝相关推荐

  1. java兵临城下_再谈java事件监听机制

    java中的事件机制的参与者有3种角色: 1.event object:就是事件产生时具体的"事件",用于listener的相应的方法之中,作为参数,一般存在于listerner的 ...

  2. Java函数式编程 - 再谈Stream

    Java函数式编程 - 再谈Stream 1.reduce() 前一章节说了Stream一些使用方式,Stream.reduce()也是Stream中的一个终结操作.使用起来较为复杂一些 1.1 概念 ...

  3. Java知多少(25)再谈Java包

    在Java中,为了组织代码的方便,可以将功能相似的类放到一个文件夹内,这个文件夹,就叫做包. 包不但可以包含类,还可以包含接口和其他的包. 目录以"\"来表示层级关系,例如 E:\ ...

  4. 再谈java内存模型

    不同的平台,内存模型是不一样的,但是jvm的内存模型规范是统一的.其实java的多线程并发问题最终都会反映在java的内存模型上,所谓线程安全无非是要控制多个线程对某个资源的有序访问或修改.总结jav ...

  5. 再谈 Java中Runnable和Thread的区别

    在面试中老有面试官问这个问题,个人觉得这个问题问的没有技术,一个死记硬背就能回答的很好.但是更深的回答是什么了,那就是直接回答源码吧. thread类实现了runnable 接口 ,Runnable就 ...

  6. 再谈java乱码:GBK和UTF-8互转尾部乱码问题分析

    一直以为java中任意unicode字符串可以使用任意字符集转为byte[]再转回来只要不抛出异常就不会丢失数据事实证明这是错的. 经过这个实例也明白了为什么 getBytes()需要捕获异常虽然有时 ...

  7. 记一次synchronized锁字符串引发的坑兼再谈Java字符串

    问题描述 业务有一个需求,我把问题描述一下: 通过代理IP访问国外某网站N,每个IP对应一个固定的网站N的COOKIE,COOKIE有失效时间. 并发下,取IP是有一定策略的,取到IP之后拿IP对应的 ...

  8. JVM系列之:再谈java中的safepoint

    文章目录 safepoint是什么 safepoint的例子 线程什么时候会进入safepoint safepoint是怎么工作的 总结 safepoint是什么 java程序里面有很多很多的java ...

  9. java中的类的继承_再谈Java中类的继承

    上篇博客谈到了Java中类的继承,但是那些远远不能满足我们在实际操作中的需要,那么怎么才能让子类的功能更强大,并且具有父类的属性呢? 一: 父类 1 public classA {2 3 final ...

最新文章

  1. 对于java程序语言的单例设计模式讲解
  2. 北京soul_打破虚拟迎接现实,“Soul”让网络社交楚楚不凡
  3. 区块链BaaS云服务(16)天德链TDBC“金丝猴链”
  4. SSIS实用教程(SQLServer2005)
  5. HSSFDataFormat大全
  6. php用while循环做出1到10的乘积,PHP实现笛卡尔积算法的实例讲解
  7. 【LeetCode】剑指 Offer 31. 栈的压入、弹出序列
  8. 一分钟了解react
  9. springboot上传文件过大,全局异常捕获,客户端没有返回值
  10. Atitit  Uncaught (in promise) SyntaxError Unexpected token in JSON at position 0
  11. Excel-舒尔特方格(专注力训练)
  12. js或jquery实现文件下载
  13. stm32f407探索者开发板(二)——新建工程(基于固件库)
  14. OpenGL 阴影图之二
  15. JUR 项目评级:BB ,展望稳定 | TokenInsight
  16. C语言基础向——二级总结
  17. Xmanager5 Passive 图形界面安装oracle,无法使用鼠标
  18. excel转word_pdf转word软件永久jpg图片ppt转换excel编辑器压缩合并拆分去水印,加入自律圈即可获得!!!...
  19. C语言实现贪吃蛇(使用链表,适合初学者)
  20. js-只能输入数字(正则)

热门文章

  1. amazeui学习笔记--css(基本样式4)--打印样式Print
  2. 交换技术及其具体应用
  3. Samba 共享目录启动mysql
  4. 【BZOJ 1951】 [Sdoi2010]古代猪文
  5. 大型网站技术学习-3. 容器Docker与kubernetes
  6. 电脑程序无法打开,开机5S后速度变慢,程序无法安装
  7. 《Java Web开发速学宝典》样章(共3章)
  8. matlab使用histogram画直方图划分柱宽度不一致问题
  9. acctype mysql assoc_dedeCMS数据库类的一些常见的使用方法
  10. php 当前时间转换,php时间转换