`

Dev-No.02 Cloneable与Clone(深拷贝、浅拷贝)

阅读更多

 

共享heap中的空间

 实现clone()方法条件:

 

  • 需拷贝的类实现Cloneable接口(该接口内没有方法)、
  • 实现 public Object clone() 方法

 

    clone()为浅拷贝,若想改为深拷贝,需类中可变域生成新的实例

//浅拷贝:

		public class ShallowCopy implements Cloneable{
     			private Date begin;
     			public Date getBegin(){return this.begin;}
     			public void setBegin(Date d){this.begin=d;}
     			public Object clone(){
 				Object obj=null;
        			try {
  					obj=super.clone();
 			 	}catch (CloneNotSupportedException ex) {
        				ex.printStackTrace(); 
     				}
 				return obj;
     			}
        }

 //深拷贝:

public class DeepCopy implements Cloneable{
 		private Date begin;
     		public Date getBegin(){return this.begin;}
     		public void setBegin(Date d){this.begin=d;}
     		public Object clone(){
 		DeepCopy obj=null;
 		try{
  			obj=(DeepCopy)super.clone();
  		}catch (CloneNotSupportedException ex) {
        		ex.printStackTrace(); 
    		}
 		obj.setBegin((Date)this.getBegin().clone());
 		return obj;
    		}
    }
分享到:
评论

相关推荐

    java设计模式【之】原型模式、深拷贝与浅拷贝【源码】【场景:克隆羊】

    java设计模式【之】原型模式、深拷贝与浅拷贝【源码】【场景:克隆羊】 * 原型模式(Prototype) * 实现方式: * 需要被克隆的 class类, 重写Object中的clone()方法,并实现Cloneable接口(否则报错 ...

    Java深浅clone

    Java深浅clone测试代码 流拷贝 Cloneable

    结合JVM解读浅拷贝和深拷贝

    java.lang.Cloneable和java.io.Serializable一样属于标记型接口,没有定义任何方法和属性。 一个类想要使用克隆方法 重写clone()方法,因为Object的clone()的修饰符是protected; @HotSpotIntrinsicCandidate ...

    bigcoder84#study-notes#_4Object中的clone方法1

    Object类中的clone方法clone()方法的作用克隆方法用于创建对象的拷贝,为了使用clone方法,类必须实现java.lang.Cloneable接口

    day16-Map、可变参数、Cloneable.pdf

    day16-Map、可变参数、Cloneable.pdf

    NC总帐API帮助文档

    java.io.Serializable, java.lang.Cloneable, java.util.EventListener, nc.vo.gl.vouchervaluechange.ValueChangeListener, nc.vo.glpub.IVoAccess -----------------------------------------------------------...

    Java程序设计复习题.docx.docx

    Cloneable C. ItenListener D. ActionListener 在读取二进制数据文件的记录时,为了提高效率常常使用的一种辅助类是 C 。 InputStream B. FilelnputStream C. BufferlnputStream D. BufferedReader 下列事件监听器...

    spring4.0 API

    java.util.HashMap,V> (implements java.lang.Cloneable, java.util.Map,V>, java.io.Serializable) java.util.LinkedHashMap,V> (implements java.util.Map,V>) org.springframework.core.annotation....

    cloneable-readable:安全地克隆可读流

    'use strict'var cloneable = require ( 'cloneable-readable' )var fs = require ( 'fs' )var pump = require ( 'pump' )var stream = cloneable ( fs . createReadStream ( './package.json' ) )pump ( stream . ...

    U10316024_HW_15_10:类 MyStack 实现 Cloneable 并使用深循环

    U10316024_HW_15_10 类 MyStack 实现 Cloneable 并使用深循环

    Cloneable:使用C#Source Generator自动生成克隆方法

    您可以实现 clone 方法,但是当开发人员添加新的 Field 或 Property 时,也应该更改 clone 方法。 另一种方法是使用性能不佳的反射。 此源生成器通过生成用于克隆对象的样板代码来节省您的时间。安装可克隆您应该...

    06 类与对象31

    1.在类定义中实现Cloneable接口 2.在类中覆盖基类的clone()方法,声明为public,注意 4.使用clone方法时要进行强制转换 1.“浅克隆

    蓝桥杯leetcode-JavaBase:Java一些类测试用例

    深克隆和浅克隆 2. Compare 实现Compare和Comparator的区别 3. Hash Hash值比较、HashSet特点、Final特点 4. Iterator 迭代器的用法 5. KeyWord volatiled和atomic 6. List ArrayList和LinkedList的区别和删除时注意...

    java-server-interview-questions:java服务端面试题整理

    java基础 1、Arrays.sort实现原理和Collections.sort实现原理...cloneable接口实现原理,浅拷贝or深拷贝 Java NIO使用 hashtable和hashmap的区别及实现原理,hashmap会问到数组索引,hash碰撞怎么解决 arraylist和linke

    Java集合面试题.docx

    为何 Collection 不从 Cloneable 和 Serializable 接口继承? 5. 为何 Map 接口不继承 Collection 接口? 6. Iterator 是什么? 7. Enumeration 和 Iterator 接口的区别? 8. 为何没有像 Iterator.add()这样的...

    二十三种设计模式【PDF版】

    很简单一个模式,就是在内存中保留原来数据的拷贝. 设计模式之 Interpreter(解释器) 主要用来对语言的分析,应用机会不多. 设计模式之 Visitor(访问者) 访问者在进行访问时,完成一系列实质性操作,而且还可以扩展. ...

    java编程常见问题

    当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常。 47.java.lang.EnumConstantNotPresentException 枚举常量不存在异常。当应用试图通过名称和枚举类型访问一个枚举对象,但该枚举对象...

    java克隆对象(两种方法)

    java的两种深度克隆方法,1cloneTest是用Cloneable接口的clone方法实现(对象必须要实现cloneable接口).2cloneSerialize.java是用对象流写对象到byte数组中,然后从byte数组中取得对象.(对象必须要实现serializble接口)

Global site tag (gtag.js) - Google Analytics