所谓浅克隆即是只将相应成员变量进行拷贝,如果含有复杂类型的成员则不进行进一步的复制,而只是将其引用进行复制。
深克隆就是复制到底~~
要实现深克隆有两种方法:
一种是将相应的类都实现克隆接口,在包含复杂类型成员的克隆方法中调用相应的成员的克隆方法。如
public class A implements Cloneable,Serializable
{
private static final long serialVersionUID = -2051342021933626021L;
B b;
public A(B b)
{
this.b=b;
}
public Object clone()
{
A obj=null;
try
{
obj=(A)super.clone();
obj.b=(B)b.clone();
}
catch (CloneNotSupportedException e)
{
e.printStackTrace();
}
return obj;
}
}
public class B implements Cloneable,Serializable
{
private static final long serialVersionUID = -5189809844536624029L;
public Object clone()
{
B obj=null;
try
{
obj=(B)super.clone();
}
catch (CloneNotSupportedException e)
{
e.printStackTrace();
}
return obj;
}
}
第二种方法是通过将对象序列化与反序列化来实现复制
A a1=new A1(new B());
ByteArrayOutputStream in=new ByteArrayOutputStream();
ObjectOutputStream inStream=new ObjectOutputStream(in);
inStream.writeObject(a1);
ByteArrayInputStream out=new ByteArrayInputStream(in.toByteArray());
ObjectInputStream outStream=new ObjectInputStream(out);
A a2=(A)outStream.readObject();
分享到:
相关推荐
今天小编就为大家分享一篇关于Java Clone深拷贝与浅拷贝的两种实现方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
Java深浅clone测试代码 流拷贝 Cloneable
使用React.js的YouTube克隆特征搜索栏浅色/深色主题无限滚动图书馆React路由器DOM React Redux 雷德克斯·桑克(Redux Thunk) Axios可用脚本在项目目录中,可以运行: npm开始npm运行构建npm运行部署
Twitter克隆前端 使用React和Apollo Client构建的Twitter克隆前端如果您正在寻找后端仓库,。核心套餐阿波罗客户端-状态管理,执行graphql查询和变异,缓存结果样式化的组件-样式React路由器-路由... PRODUCTION_ENDP
Twitter克隆后端 使用Prisma和GraphQL构建的Twitter克隆后端。 如果您正在寻找前端存储库, 签出已 核心套餐 pyramida-允许我们定义应用程序模型并根据定义的模型生成CRUD操作 graphql-yoga jsonwebtoken-身份验证 ...
词表 这是从用于发现、枚举、模糊测试和利用的常用工具中提取的词表集合。 完整(深度)克隆 git clone -j ` nproc ` -...部分(浅)克隆 跳过: 、 、 git clone -j ` nproc ` https://github.com/drtychai/wordlists
java中clone的详细用法,分浅拷贝和深拷贝,并分别有详细的实例介绍。从原理分析。
}3.、控制台,可以看到了改了复制出来的,也不会改变之前的4、浅复制 对象中引入对象,观察浅复制和深复制的区别理解:1、浅复制中加入对象,测试观察引出深复制2、
Java克隆(Clone)是Java语言的特性之一,本篇文章主要介绍了Java中的Clone机制是如何工作的,需要的朋友可以参考下
List的深度复制 浅谈C#中List<T>对象的深度拷贝问题
java中clone的详细用法,分浅拷贝和深拷贝,并分别有详细的实例介绍。从原理分析。
NULL 博文链接:https://zzqrj.iteye.com/blog/572562
主要介绍了php5对象复制、clone、浅复制与深复制,结合实例形式详细分析了php5对象复制、clone、浅复制与深复制相关概念、原理、使用技巧与操作注意事项,需要的朋友可以参考下
主要介绍了java中的深拷贝和浅拷贝(clone()方法的重写、使用序列化实现真正的深拷贝),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
java设计模式【之】原型模式、深拷贝与浅拷贝【源码】【场景:克隆羊】 * 原型模式(Prototype) * 实现方式: * 需要被克隆的 class类, 重写Object中的clone()方法,并实现Cloneable接口(否则报错 ...
浅拷贝(浅复制、浅克隆)、深拷贝(深复制、深克隆)实战工程,IDEA搭建
主要介绍了JQuery中clone方法复制节点,实例分析了clone方法浅克隆与深克隆的使用方法,需要的朋友可以参考下
惰性深克隆,高性能的js克隆 传统的深拷贝做法 JSON.parse(JSON.stringify(data)) 递归浅拷贝 第一种做法存在一些局限,很多情况下并不能使用,因此这里就不提了;第二种做法一般是工具库中的深拷贝函数实现方式,...
主要介绍了Java中实现深拷贝的两种方式—clone() & Serialized,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧