Cloneable 接口实现原理

  Cloneable接口是Java开发中经常使用的一个接口, 它的做用是 使一个类的实例可以将自身拷贝到另外一个新的实例中,注意,这里所说的“拷贝”拷的是对象实例,而不是类的定义,进一步说,拷贝的是一个类的实例中各字段的值。
 
  在开发过程当中,拷贝实例是常见的一种操做,若是一个类中的字段较多,而咱们又采用在客户端中逐字段复制的方法进行拷贝操做的话,将不可避免的形成客户端代码繁杂冗长,并且也没法对类中的私有成员进行复制,而若是让须要具有拷贝功能的类 实现Cloneable接口,并 重写clone()方法,就能够经过调用clone()方法的方式简洁地实现实例拷贝功能。
 
  深拷贝(深复制)和浅拷贝(浅复制)是两个比较通用的概念,尤为在C++语言中,若不弄懂,则会在delete的时候出问题,可是咱们在这幸亏用的是Java。虽然Java自动管理对象的回收,但对于深拷贝(深复制)和浅拷贝(浅复制),咱们仍是要给予足够的重视,由于有时这两个概念每每会给咱们带来不小的困惑。
   浅拷贝是指拷贝对象时仅仅拷贝对象自己(包括对象中的基本变量),而不拷贝对象包含的引用指向的对象。深拷贝不只拷贝对象自己,并且拷贝对象包含的引用指向的全部对象。举例来讲更加清楚:对象 A1 中包含对 B1 的引用, B1 中包含对 C1 的引用。浅拷贝 A1 获得 A2 , A2 中依然包含对 B1 的引用, B1 中依然包含对 C1 的引用。
   深拷贝则是对浅拷贝的递归,深拷贝 A1 获得 A2 , A2 中包含对 B2 ( B1 的 copy )的引用, B2 中包含对 C2 ( C1 的 copy )的引用。
 
若不对clone()方法进行改写,则调用此方法获得的对象即为浅拷贝
相关文章
相关标签/搜索