对象克隆protected Object clone() 以上的方法不能直接调用,需要实现Cloneable接口class Person implements Cloneable{ private String name; public String getName(){ return this.name; } public void setName(String name){ this.name = name; } public Object clone(){ return super.clone(); //虽然自己不知道克隆,但是Object知道啊 }}在以后的JAVA类库中会经常看到Clonable接口出现,只有实现了此接口的对象才能被克隆尽管Object里面有克隆方法Clonable---告诉JVM这个对象可能被拷贝 public Object clone(){//---重写 clone说明这个对象可以被拷贝 return super.clone(); //虽然自己不知道克隆,但是Object知道啊 }但是上面的属于浅拷贝:,Object 类提供的方法clone 只是拷贝本对象,其对象内部的数组、引用对象等都不拷贝,还是指向原生对象的内部元素地址,这种拷贝就叫做浅拷贝,确实是非常浅,两个对象共享了一个私有变量。。。。是一个种非常不安全的方式,在实际项目中使用还是比较少的深入的拷贝:public class Thing implements Cloneable{//定义一个私有变量private ArrayList<String> arrayList = new ArrayList<String>(); @Override public Thing clone(){ Thing thing=null; try { thing = (Thing)super.clone(); thing.arrayList = (ArrayList<String>)this.arrayList.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return thing; }}Clone与final两对冤家。对象的clone 与对象内的final属性是由冲突的private final ArrayList<String> arrayList = new ArrayList<String>();你要使用clone 方法就在类的成员变量上不要增加final 关键字。原型模式适合在什么场景使用?一是类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等;二是通过new 产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式;三是一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使用。在实际项目中,原型模式很少单独出现,一般是和工厂方法模式一起出现,通过clone的方法创建一个对象,然后由工厂方法提供给调用者。
详细解决方案
j2se-clone
热度:10366 发布时间:2013-02-25 00:00:00.0
相关解决方案
- 请问:J2SE URLDecode出错
- j2se 上拉框变化字体
- j2se-nio-FileLock
- j2se-metadata
- J2SE 5.0的HotSpot JVM下的GC学习 - ParallelGC
- J2SE 5.0的HotSpot JVM下的GC学习 - ParallelCompactingGC
- j2SE 总揽
- J2EE、J2SE、J2ME的容易区别
- J2SE 杂感
- j2se-可变参数列表
- J2SE 5.0的HotSpot JVM下的GC学习 - 分代、GC类型、快速分配
- j2se-socket的缓冲区议论
- j2se-java中,怎么获得用户当前的工作目录
- j2se-Java异步socket
- J2SE J2EE J2ME的差异 (转)
- J2SE JPanel 空布局嵌套有关问题
- j2se-zip
- Build path specifies execution environment J2SE-1.4 异常
- j2se-同步的Map
- J2se 基础温习
- j2se-String.spilt,或("|")分隔符有关问题
- log4j跟spring的配置文件位置-J2SE
- j2me 兑现 j2se 的 Properties 功能
- J2SE JPanel的缩放有关问题
- j2se-clone
- J2SE 试题解决办法
- “文件夹路径 My Documents中包含无效字符”的异常-J2SE Runtime Environment安装时出现
- 哪位知道J2EE、J2ME、J2SE 各是什么东西? 是怎样的关系?解决思路
- 何位知道J2EE、J2ME、J2SE 各是什么东西? 是怎样的关系
- j2se-File种和RandomAccessFile类[转]