`
junherry
  • 浏览: 95907 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java中的对象克隆

    博客分类:
  • Java
阅读更多

在java中,Object类位于java类层次的根部,其它所有的java类都继承自Object类。在Object类中,有一个方法叫clone()方法,代码为:protected native Object clone() throws CloneNotSupportedException; 该方法可用来进行克隆操作,其中native关键字是指clone()方法不是java语言写的方法,而是jvm调用的本地硬件或其它语言写的方法。因此,当Object的一个子类要有克隆功能时,就要覆盖父类的clone()方法。

java.lang包中,有一个Cloneable接口,该接口是一个空接口,只是用来指明一个对象是否可以被克隆。jdk源码如下所示:public interface Cloneable {};因此,如果Object的子类想要克隆时也要实现Cloneable接口。在代码中可以检验某个对象obj是否实现了Cloneable接口:if(obj instanceof Cloneable){......}else{......}

java默认的克隆方式是浅克隆,这种方式能够克隆源对象所有的值引用,但是,如果源对象里边有对象引用存在,浅克隆只能克隆源对象的对象引用,类似于克隆指向对象的指针,但是源对象的副本将会与源对象拥有相同的对象内容。深克隆则是把源对象中所引用的对象也克隆了一遍,这样就能够保证源对象的副本与源对象本身内容相同,但各自的改变不会影响对方。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics