首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

对象克隆 初探

对象克隆 对象克隆指的是对象的赋值操作 clone() 方法 protected Object clone() throws CloneNotSupportedException 创建并返回此对象的一个复制副本...实现克隆操作 class Book implements Cloneable { // 实现 Cloneable接口,对象可以被克隆 private String title ; private...() throws CloneNotSupportedException { return super.clone(); }// 覆写 clone方法,调用父类的clone()方法,可以实现对象克隆...CloneNotSupportedException { Book book_A = new Book("Java",11.1) ; Book book_B = (Book) book_A.clone() ; // 克隆操作...完成 } } 对象克隆的理论价值高于实际价值 重点: 上述的代码中,提到了 标记接口 ,这个概念十分重要关键,标记接口好比一张口令卡一样,只有拿到(实现)标记接口(口令卡)才可以进入一些特定的地方

57510

Java对象的深克隆与浅克隆对象复制)

第一次声明保证克隆对象将有单独的内存地址分配。 第二次声明表明,原始和克隆对象应该具有相同的类类型,但它不是强制性的。...而通过clone方法赋值的对象跟原来的对象时同时独立存在的。 如何实现克隆克隆和深克隆的主要区别在于是否支持引用类型的成员变量的复制,下面将对两者进行详细介绍。...浅克隆 在浅克隆中 如果原型对象的成员变量是值类型,将复制一份给克隆对象 如果原型对象的成员变量是引用类型,则将引用对象的地址复制一份给克隆对象,也就是说原型对象克隆对象的成员变量指向相同的内存地址。...深克隆 ? 在深克隆中,无论原型对象的成员变量是值类型还是引用类型,都将复制一份给克隆对象,深克隆将原型对象的所有引用对象也复制一份给克隆对象。...总结 实现对象克隆有两种方式: 实现Cloneable接口并重写Object类中的clone()方法 实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深克隆 基于序列化和反序列化实现的克隆不仅仅是深度克隆

2.9K42
您找到你想要的搜索结果了吗?
是的
没有找到

Java的对象克隆

Object 类提供的 clone() 方法是 “浅拷贝”,并没有克隆对象中引用的其他对象,原对象克隆对象仍然会共享一些信息。...深拷贝指的是:在对象中存在其他对象的引用的情况下,会同时克隆对象中引用的其他对象,原对象克隆对象互不影响。介绍克隆要了解克隆的具体含义,先来回忆为一个包含对象引用的变量建立副本时会发生什么。...可以看到,默认的克隆操作是 “浅拷贝”,并没有克隆对象中引用的其他对象。浅拷贝会有什么影响吗?这要看具体情况。如果原对象和浅克隆对象共享的子对象是不可变的,那么这种共享就是安全的。...对象对于克隆很 “偏执”,如果一个对象请求克隆,但没有实现 Cloneable 接口,就会生成一个受检异常(CloneNotSupportedException 异常)。...要建立深拷贝,还需要做更多工作,克隆对象中可变的实例域。

58610

前端对接口是什么意思_接口返回json格式

文章目录 什么是JSON? 为什么需要JSON? 总结 什么是JSONJSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。...是不是很简单,如果不简单也不会这么火了↓↓↓ var json = { "xxx":"xxx"}; 右边可以是一个数字,可以是一个对象,可以是字符串,可以是一个数组,可以是一个json(套娃),..."name":"小斌哥", "age":21, "sex":"爷们"}; 小斌哥这个对象里面包含姓名、年龄和性别,多个数据可以通过逗号隔开,因此,小斌哥这个对象就生成了!!...那一大坨拆开看,是不是就是一个个的对象对象之间用逗号隔开了,对象里面有姓名、性别和年龄,每一个属性都是用键值对装的,并且用逗号隔开,是不是很容易呢,其实如果别人给你一大堆报文,可以用utools(一个软件...总结 大家可以看到,通过json,非常方便快捷地把一些复杂的对象和数据进行发送。

90430

Java--对象克隆

制作对象副本需要使用clone()方法。这个方法在基础类Object 中定义成“protected”模式。所以在希望克隆的任何衍生类中,必须将其覆盖为“public”模式。...使类具有克隆能力: 因为Object类将clone()定义为”protected", 所以衍生类不做点什么的话,是无法具有克隆能力的(很简单,对象无法调用本类的protected方法)。...注意:因为Java不可能在衍生之后反而缩小方法的访问范围,所以一旦对象变得可以克隆,从它衍生的任何东西都是可以克隆的。...它的存在有两个原因: 可能有一个上溯造型句柄指向一个基础类型,而且不知道它是否真的能克隆那个对象。在这种情况下,可用instanceof 关键字调查句柄是否确实同一个能克隆对象连接。...考虑到我们可能不愿所有对象类型都能克隆。所以Object.clone()会验证一个类是否真的是实现了Cloneable 接口。

71570

一文了解Java对象克隆,深浅拷贝(克隆

一、什么是对象克隆? 在Java的Object类中,有一个方法名为clone(),直译过来就是克隆,核心概念就是复制对象并返回一个新的对象。...(1)在要实现克隆对象类中实现Cloneable接口。 为啥?...三、测试(浅克隆) 按照前面官方文档提到的,clone通常是一个浅拷贝,如果要做到深拷贝,需要对复制对象中的对象引用进行修改,换句话说就是浅拷贝的效果就是引用例行的属性无法完全复制,被克隆对象克隆对象中的该引用类型的属性指向同一个引用...浅拷贝的情况下,原被克隆对象发生变化后,克隆对象的基本数据类型和不可变引用数据类型(String)的数据未发生影响,而cp字段为可变的应用类型,可以观察到克隆对象的内容随着被克隆对象的变化发生了同样的变化...四、深拷贝(深克隆) 以上章节中的浅拷贝的效果往往达不到我们的要求,因为在实际使用时,我们肯定是希望新拷贝出来的对象不受原对象的影响,否则咱们做出拷贝的意义何在?

3.1K40

Java提高篇——对象克隆(复制)

要想对一个对象进行复制,就需要对clone方法覆盖。 为什么要克隆? 大家先思考一个问题,为什么需要克隆对象?直接new一个对象不行吗?...而通过clone方法赋值的对象跟原来的对象时同时独立存在的。 如何实现克隆 先介绍一下两种不同的克隆方法,浅克隆(ShallowClone)和深克隆(DeepClone)。...浅克隆和深克隆 1、浅克隆 在浅克隆中,如果原型对象的成员变量是值类型,将复制一份给克隆对象;如果原型对象的成员变量是引用类型,则将引用对象的地址复制一份给克隆对象,也就是说原型对象克隆对象的成员变量指向相同的内存地址...2、深克隆 在深克隆中,无论原型对象的成员变量是值类型还是引用类型,都将复制一份给克隆对象,深克隆将原型对象的所有引用对象也复制一份给克隆对象。...方法克隆对象

86830

Json是什么

json ajax传递复杂数据如果自己进行格式定义的话,会经历组装,解析的过程,因此 ajax中就有了一个事实上的数据传输标准json。...Json(是一个标准,就像XML一样,Json规定了以什么样的格式保存为一个字符串),将复杂的对象序列化为一个字符串,在浏览器再将字符串反序列化为JavaScript可以读取的对象。...Json几乎被所有的语言支持。 Json是什么 json是javascript对象或者数组格式的字符串。HTTP协议不能传递javascript对象。所以需要转化为字符串进行传输。。...//对象的某个属性还可以是某个另外一个对象 //(就是狗的主人又调用了一个对象。...Ajax从服务器中取出来Json格式的字符串,然后再在浏览器端进行解释成javascript对象 1)>>通过eval函数,但是不推荐,不安全 var str = "[{ name: 'rupeng

61020

如何在 JavaScript 中克隆对象

如何处理 JavaScript 中的克隆对象JavaScript 处理对对象的赋值的方式与处理基本值的方式不同。它不是保存值,而是使用指向内存中值的指针。...使用 JSON.parse()/JSON.stringify() 克隆对象const weather= { today: '', forecast: { morning: '' }}const currentWeather.../JSON.stringify 方法有重要的限制:日期被转换为字符串无穷大和 NaN 被转换为 null对象属性中的 undefined、函数和 Symbol 会被忽略,并在数组中转换为 null使用...JSON.parse()/JSON.stringify() 具有明显的优势。...它在管理超出 JSON 范围的复杂对象方面表现出色,包括具有二进制数据或循环对象图的对象。尽管如此,结构化克隆确实具有一定的局限性。

15640

Java提升篇:对象克隆(复制)

要想对一个对象进行复制,就需要对clone方法覆盖。 为什么要克隆?   大家先思考一个问题,为什么需要克隆对象?直接new一个对象不行吗?   ...而通过clone方法赋值的对象跟原来的对象时同时独立存在的。 如何实现克隆 先介绍一下两种不同的克隆方法,浅克隆(ShallowClone)和深克隆(DeepClone)。...浅克隆和深克隆 1、浅克隆 在浅克隆中,如果原型对象的成员变量是值类型,将复制一份给克隆对象;如果原型对象的成员变量是引用类型,则将引用对象的地址复制一份给克隆对象,也就是说原型对象克隆对象的成员变量指向相同的内存地址...2、深克隆 在深克隆中,无论原型对象的成员变量是值类型还是引用类型,都将复制一份给克隆对象,深克隆将原型对象的所有引用对象也复制一份给克隆对象。...方法克隆对象

91230
领券