clone方法

本小妞迷上赌 提交于 2020-03-23 18:35:15

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、拷贝工厂方法

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!