VVL1295

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

clone方法

Object类里面有一个protected的clone对象,返回对象的副本,进行的浅拷贝,只是副本的字段引用原对象的字段引用的对象;

如果对象里面除了基本类型的字段和不可变对象,还有其他对象,那么这些其他的对象就要进行深拷贝;

以下是一个典型的重写clone方法的例子:

class Person implements Cloneable {
   int number;
   String name;
   String[] elements;
   public Person clone() {
      try {
         Person person = (Person) super.clone();
         person.elements = this.elements.clone();//进行了深拷贝
         return person;
      } catch (Exception ex) {
         System.out.println("Test1的clone方法抛出异常。");
         ex.printStackTrace();
       }
      return null;
   }
}

极少需要使用clone方法,而且,有更好的替代clone方法,

1、拷贝构造器

class Person {
   int number;
   String name;
   String[] elements;
   public Person(){
  
   }
   public Person(Person person){
      this.number = person.number;
      this.name = person.name;
      this.elements = person.elements.clone();
   }
}

2、拷贝工厂方法

posted on 2015-06-22 22:43  bobo2018  阅读(134)  评论(0)    收藏  举报