java json clone_再谈java clone 以及 浅/深拷贝
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 以及 浅/深拷贝相关推荐
- java兵临城下_再谈java事件监听机制
java中的事件机制的参与者有3种角色: 1.event object:就是事件产生时具体的"事件",用于listener的相应的方法之中,作为参数,一般存在于listerner的 ...
- Java函数式编程 - 再谈Stream
Java函数式编程 - 再谈Stream 1.reduce() 前一章节说了Stream一些使用方式,Stream.reduce()也是Stream中的一个终结操作.使用起来较为复杂一些 1.1 概念 ...
- Java知多少(25)再谈Java包
在Java中,为了组织代码的方便,可以将功能相似的类放到一个文件夹内,这个文件夹,就叫做包. 包不但可以包含类,还可以包含接口和其他的包. 目录以"\"来表示层级关系,例如 E:\ ...
- 再谈java内存模型
不同的平台,内存模型是不一样的,但是jvm的内存模型规范是统一的.其实java的多线程并发问题最终都会反映在java的内存模型上,所谓线程安全无非是要控制多个线程对某个资源的有序访问或修改.总结jav ...
- 再谈 Java中Runnable和Thread的区别
在面试中老有面试官问这个问题,个人觉得这个问题问的没有技术,一个死记硬背就能回答的很好.但是更深的回答是什么了,那就是直接回答源码吧. thread类实现了runnable 接口 ,Runnable就 ...
- 再谈java乱码:GBK和UTF-8互转尾部乱码问题分析
一直以为java中任意unicode字符串可以使用任意字符集转为byte[]再转回来只要不抛出异常就不会丢失数据事实证明这是错的. 经过这个实例也明白了为什么 getBytes()需要捕获异常虽然有时 ...
- 记一次synchronized锁字符串引发的坑兼再谈Java字符串
问题描述 业务有一个需求,我把问题描述一下: 通过代理IP访问国外某网站N,每个IP对应一个固定的网站N的COOKIE,COOKIE有失效时间. 并发下,取IP是有一定策略的,取到IP之后拿IP对应的 ...
- JVM系列之:再谈java中的safepoint
文章目录 safepoint是什么 safepoint的例子 线程什么时候会进入safepoint safepoint是怎么工作的 总结 safepoint是什么 java程序里面有很多很多的java ...
- java中的类的继承_再谈Java中类的继承
上篇博客谈到了Java中类的继承,但是那些远远不能满足我们在实际操作中的需要,那么怎么才能让子类的功能更强大,并且具有父类的属性呢? 一: 父类 1 public classA {2 3 final ...
最新文章
- 对于java程序语言的单例设计模式讲解
- 北京soul_打破虚拟迎接现实,“Soul”让网络社交楚楚不凡
- 区块链BaaS云服务(16)天德链TDBC“金丝猴链”
- SSIS实用教程(SQLServer2005)
- HSSFDataFormat大全
- php用while循环做出1到10的乘积,PHP实现笛卡尔积算法的实例讲解
- 【LeetCode】剑指 Offer 31. 栈的压入、弹出序列
- 一分钟了解react
- springboot上传文件过大,全局异常捕获,客户端没有返回值
- Atitit Uncaught (in promise) SyntaxError Unexpected token in JSON at position 0
- Excel-舒尔特方格(专注力训练)
- js或jquery实现文件下载
- stm32f407探索者开发板(二)——新建工程(基于固件库)
- OpenGL 阴影图之二
- JUR 项目评级:BB ,展望稳定 | TokenInsight
- C语言基础向——二级总结
- Xmanager5 Passive 图形界面安装oracle,无法使用鼠标
- excel转word_pdf转word软件永久jpg图片ppt转换excel编辑器压缩合并拆分去水印,加入自律圈即可获得!!!...
- C语言实现贪吃蛇(使用链表,适合初学者)
- js-只能输入数字(正则)