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

Java的clone()方法

Java的clone()方法   ⑴clone方法将对象复制了一份并返回给调用者。一般而言,clone()方法满足: ①对任何的对象x,都有x.clone() !...⑵Java中对象的克隆 ①为了获取对象的一份拷贝,我们可以利用Object类的clone()方法。 ②在派生类中覆盖基类的clone()方法,并声明为public。...③在派生类的clone()方法中,调用super.clone()。 ④在派生类中实现Cloneable接口。...继承自java.lang.Object类的clone()方法是浅复制, 在编写程序时要注意这个细节。...覆盖Object中的clone方法, 实现深复制   现在为了要在clone对象时进行深复制, 那么就要Clonable接口,覆盖并实现clone方法,除了调用父类中的clone方法得到新的对象, 还要将该类中的引用变量也

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

    php之clone 复制对象以及__clone魔术方法

    那么我们如果想要把这个值不守clone出来的对象的值影响该怎么办呢? 那么在这里我们只需要在此clone一下这个成员变量就好了,该如何clone了?...那么我们现在就可以使用我们的魔法方法__clone了。 首先我们来说说__clone()在什么状态下触发: 当我们clone操作的时候将会除非这个类里面的__clone方法。...那么把我们的成员变量在__clone方法里面clone一下就好了,如下代码演示: 注:clone只能用于对象克隆,对象复制。记住,如果你clone一个非对象变量将会报错no obj。。。...以下例子是我从网上找的一个例子,感觉不错,这里将用这个例子来讲解魔法方法__clone的使用: 本来这个是没有注释的,我顺便把解释丢到了里面,这样强制clone后就不会指向原来的对象了。 <?...的使用方法了=。

    89510

    Java基础——clone()方法浅析

    那么在java语言中,几种方式可以创建对象呢?  使用new操作符创建一个对象 使用clone方法复制一个对象    那么这两种方式什么相同和不同呢? new操作符的本意是分配内存。...注意:如果一个类没有复写clone()方法,则clone()方法默认的是返回一个Object对象,我们可以强制转化为我们需要的类。...的用法   Java编程中经常会用到clone()方法clone()方法是Object类的一个protected的方法,由于非静态所以不能直接调用,但是可以被子类调用。...,两种方法: 该类在定义声明时声明实现了Cloneable接口,即在声明时加上“implements Cloneable”即可(浅拷贝) 该类在定义时,声明实现Cloneable接口,并且复写clone...()方法,并将其声明为public(深拷贝) 三、浅析clone()方法与浅拷贝、深拷贝概念   在上面一节中我们发现正确使用clone()方法的两种方法的结果并不相同,直接实现Cloneable接口只是实现了浅拷贝

    59790

    JDK 之 如何实现clone方法

    JDK 之 如何实现clone方法 clone方法实现 测试类:Human、Student、Teacher、Matser clone实现方式: Human类通过实现Clonable接口中clone方法...在clone方法中通过super.clone()调用父类Object的clone方法 对于需要修正的域进行修正,进行深度clone. /* * @ProjectName: 编程学习 * @Copyright...或是通过公开方法来开放内部的私有方法的使用,这种看似鸡肋的代码设计,也可以达到相同的目的。 接口中只有一个clone方法,主要为公开和重载clone方法而设计。...,并返回一个新的对象,但是对于复杂对象,只传递了对象的引用,这在很多情况下是很危险的,因为你在修改当前clone得来的类时,会改变原来的对象中引用指向的对象 如果当前类应用Clonable接口,则为当前类创建一个新对象...实现方式需要继承Cloneable接口 重写clone方法主要为了内部对象型成员域的深度clone和调整clone方法的可见域,确保在其他类中不会因为clone方法被protect修饰而无法使用。

    46920

    JS实现clone()方法,对五种主要数据类型进行值复制

    JavaScript中,简单的方法就是用JSON函数,将对象stringify成字符串,再parse成一个新对象。要么就是从网上搜个代码,开源社区里面clone的代码还是不少的。...所以这里我将介绍一种,我自认为很优美的深复制方法,当然可能也存在问题。如果你发现了我的实现方法什么问题,请及时让我知道~ 先决条件:1....()函数是整个方法的核心,对于任意一个非js预定义的对象,都会调用这个函数。...而对于所有js预定义的对象,如Number,Array等,我们就要实现一个辅助clone()函数来实现完整的克隆过程: /* Method of Array*/ Array.prototype.clone...同时我也在开发一个插件,主要的思想也就是扩展预定义对象的方法。 这个插件叫JustJS(Github项目地址) 以下一些特性:1. 同时支持Web前端和node.js使用。2.

    3K10

    Java中clone方法的使用

    什么是clone   在实际编程过程中,我们常常要遇到这种情况:一个对象object1,在某一时刻object1中已经包含了一些有效值,此时可能会需要一个和object1完全相同新对象object2,...要满足这种需求虽然很多途径,但实现clone()方法是其中最简单,也是最高效的手段。   ...  从上面对clone方法的注解可知clone方法的通用约定:对于任意一个对象x,表达式①x.clone !...Kevin Zhang After clone book_clone.name :Think After clone book_clone.author :Kevin Zhang 分析:上述结果可知...也就是说,这些的类中的所有方法都是不能改变其自身的值的。这也让我们在编clone类的时候了一个更多的 选择。同时我们也可以把自己的类编成不可更改的类。

    73830

    发布系统那么难?

    必要性 如果一个上点规模的公司,技术团队什么值得一做的系统,那么发布系统算一个。 jenkins用的好好的,为什么要自己搞呢?...总结下来,下面几点原因: 1) 每个公司的流程和技术栈都是不一样的,生搬硬套,就像便秘一样不顺畅。 2) 发布系统技术开发成本不高,很容易搞。...多简单呢?我们提供了两个人力,只花了10个工作日就全部完成了。看完本文,你要是觉得不简单,那就是我们太牛掰了(囧),毕竟也是见识过七八个高开去做同样事情的豪华阵容。...这里两个技术点: 1) 如何获取git的提交记录并进行切换? 2) 如何显示滚动日志? 获取gitlab的提交记录 拿gitlab来说(因为用的最多)。加入gitlab的maven即可使用。...注意:以下脚本巨坑~,一定要传参 n=0while [[ $n -lt 10 ]]do let "n++" ex=`ps aux|grep \/${flag}|grep -v grep

    57930

    关于Cloneable接口和clone方法「建议收藏」

    1、使用 创建对象两种方式: new 和 clone 当一个对象创建过程复杂,我们是否可以根据已有的对象直接来克隆一份,而不必关系创建的细节呢(原型模式)。...1.1 Java Object根类默认提供了clone方法: protected native Object clone() throws CloneNotSupportedException; 一个本地方法...} 打印: CloneModel{name=’null’, age=0} 2、重写clone方法原则 x.clone !...但建议这么做) 3、浅克隆和深克隆 3.1 默认clone方法时浅克隆 Object默认的clone方法实际是对域的简单拷贝,对于简单数据类型,是值的拷贝; 对于复杂类型的字段,则是指针地址的拷贝,clone...后的对象和原对象指向的还是一个地址空间 所以说默认的clone方法时浅克隆。

    26110

    【Node.js】你真的了解 Node.js

    最近笔者在阅读《深入浅出Node.js》,结合查阅的相关资料,本文算是一篇 Node.js 笔记。 Node.js 是基于 Chrome V8 引擎的 JavaScript 运行时环境。...在 Node.js 出现之前,JavaScript 只能在浏览器中使用。而 Node.js 的出现打破了这个局面。以下为 Chrome 浏览器和 Node.js 的组件构成。...浏览器和 Node.js 的结构是相似的,比如它们都是通过事件驱动的异步架构,浏览器通过事件驱动来完成界面 UI 交互,Node.js 通过事件驱动完成服务 I/O。...这也是 Node.js 能够处理高并发的重要原因。在 Node.js 中,一个 8GB 内存的服务器,可以同时处理超过 4 万用户的连接。 单线程其实是弊端的(后文适合场景中会指出)。...[3] 来,告诉你Node.js究竟是什么?

    5.4K10

    PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析

    本文实例讲述了PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法。...为了解决复制问题,PHP提供了一种克隆clone(关键字,不是方法)对象的显式方法。...如果需要对克隆后的副本对象在克隆时重新为成员属性赋初值,则可以在类中声明一个魔术方法“__clone()”。该方法是在对象克隆时自动调用的,所以就可以通过此方法对克隆后的副本重新初始化。...__clone()方法不需要任何参数。将上例中的代码改写一下,在类中添加魔术方法__clone(),为副本对象中的成员属性重新初始化。 <?...,并且,此时还会自动调用该类的魔术方法:__clone()(只要该类中有该方法)。

    38710

    详解Java中的clone方法 -- 原型模式

    那么在java语言中,几种方式可以创建对象呢?  1 使用new操作符创建一个对象  2 使用clone方法复制一个对象  那么这两种方式什么相同和不同呢? new操作符的本意是分配内存。...而clone在第一步是和new相似的, 都是分配内存,调用clone方法时,分配的内存和源对象(即调用clone方法的对象)相同,然后再使用原对象中对应的各个域,填充新对象的域, 填充完成之后,clone...覆盖Object中的clone方法, 实现深拷贝   现在为了要在clone对象时进行深拷贝, 那么就要Clonable接口,覆盖并实现clone方法,除了调用父类中的clone方法得到新的对象, 还要将该类中的引用变量也...这需要让Face类也实现Cloneable接口,实现clone方法,并且在在Head对象的clone方法中,拷贝它所引用的Face对象。...内存结构和运行方式更深的了解。

    38900

    详解Java中的clone方法:原型模式

    那么在java语言中,几种方式可以创建对象呢? 1 使用new操作符创建一个对象 2 使用clone方法复制一个对象 那么这两种方式什么相同和不同呢? new操作符的本意是分配内存。...而clone在第一步是和new 相似的, 都是分配内存,调用clone方法时,分配的内存和源对象(即调用clone方法的对象)相同,然后再使用原对象中对应的各个域,填充新对象的域, 填充完成之后,clone...覆盖Object中的clone方法, 实现深拷贝 现在为了要在clone对象时进行深拷贝, 那么就要Clonable接口,覆盖并实现clone方法,除了调用父类中的clone方法得到新的对象, 还要将该类中的引用变量也...方法中,将源对象引用的Head对象也clone一份。...这需要让 Face类也实现Cloneable接口,实现clone方法,并且在在Head对象的clone方法中,拷贝它所引用的Face对象。

    73310
    领券