java 基础之深克隆浅克隆

 这段时间一直在看javabean的处理,可谓是博大精深,apache的beanutil由于用到的是反射机制,和cglib的beanutil速度差了好几百倍,这不是本节博客重点,在研究bean的拷贝的时候,顺便复习了一下java里的克隆技术,这里只做克隆部分记录
(下次分享一下另外一个高效率,高配置的beanutil工具来copyproperties,在googlecode上找到一个可以通过配置xml的元和目标的框架来进行copy属性的东东,希望通过努力我可以改成annotation版本)


浅克隆:
简单值类型的拷贝,引用类型只是用了同一份,并没有copy一份新的,所以更改时候会有影响。

深克隆:
把简单类型和复杂类型都拷贝一份,这样更改源或目标里的引用时不会印象另一端。

代码如下:

Java代码 复制代码 收藏代码
  1.  
  2.  
  3. import java.io.ByteArrayInputStream;
  4. import java.io.ByteArrayOutputStream;
  5. import java.io.IOException;
  6. import java.io.ObjectInputStream;
  7. import java.io.ObjectOutputStream;
  8. import java.io.Serializable;
  9. import java.util.Locale;
  10.  
  11.  
  12. public class DeepAndShallowClone {
  13. public static void main(String[] args) throws Exception{
  14. System.out.println("-------浅克隆克隆---------");
  15. // shallow clone
  16. ShallowClone sc = new ShallowClone();
  17. ShallowClone scCopy = (ShallowClone)sc.clone();
  18.  
  19.  
  20. System.out.println("Shallow Copy");
  21. System.out.println("--Before clone");
  22. System.out.println("sc.a=" + sc.a);
  23. System.out.println("sc.b=" + sc.b[0]);
  24.  

你可能感兴趣的:(java,基础)