21xrx.com
2024-11-22 02:52:00 Friday
登录
文章检索 我的文章 写文章
Java中的深拷贝和浅拷贝方法
2023-06-16 16:56:26 深夜i     --     --
Java 深拷贝 浅拷贝

在Java中复制对象是一件常见的任务。当需要创建一个与原始对象具有相同属性的新对象时,复制对象是非常有用的。但是,在进行对象复制时,必须考虑到对象在内存中的位置。对象拷贝总共有两种方式:深拷贝和浅拷贝。

浅拷贝只会复制对象的引用,而不是对象本身。也就是说,两个引用变量将指向同一个对象,因此在对其中一个对象进行更改时,另一个对象也会受到影响。这是很危险的。

深拷贝会复制对象及其所有嵌套的对象。创建一个新的对象,其中属性与原始对象相同。如果修改一个对象,不会影响与之相关联的任何对象。

下面是Java中如何实现深拷贝和浅拷贝的方法。

浅拷贝代码:


class Student implements Cloneable {

  public String name;

  public int age;

  private Instructor instructor;

  public Student(String name, int age, Instructor instructor)

    this.name = name;

    this.age = age;

    this.instructor = instructor;

  

  public Object clone() throws CloneNotSupportedException{

    return super.clone();

  }

}

深拷贝代码:


class Student implements Cloneable {

  public String name;

  public int age;

  private Instructor instructor;

  public Student(String name, int age, Instructor instructor)

    this.name = name;

    this.age = age;

    this.instructor = instructor;

  

  public Object clone() throws CloneNotSupportedException{

    Student student = (Student) super.clone();

    student.instructor = (Instructor) instructor.clone();

    return student;

  }

}

class Instructor implements Cloneable {

  public String name;

  public Instructor(String name)

    this.name = name;

  

  public Object clone() throws CloneNotSupportedException {

    return super.clone();

  }

}

如上所述,对于嵌套对象,只有实现深拷贝的时候需要对嵌套对象也进行深拷贝。

三个

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复