21xrx.com
2024-11-22 03:00:05 Friday
登录
文章检索 我的文章 写文章
Java中实现对象复制的方法及案例
2023-06-14 19:41:06 深夜i     --     --
Java对象复制 深拷贝 浅拷贝

在Java编程中,对象之间的复制是一项重要的操作。有时我们需要在不改变原始对象的情况下复制它,以便对复制后的对象进行某些操作。Java中提供了多种实现对象复制的方法,下面将介绍其中的两种方法。

1. 深拷贝方式

深拷贝的方式会将所有属性都复制给新的对象,包括基础类型和自定义类型。这个过程需要重写clone()方法,并且需要实现Serializable接口。示例代码如下:


class Employee implements Cloneable, Serializable {

  private static final long serialVersionUID = 1L;

  private String name;

  private int age;

  private Department department; //自定义类型的属性

  public Object clone() {

    Employee cloned = null;

    try {

      cloned = (Employee) super.clone();

      cloned.department = (Department) department.clone();

    } catch (CloneNotSupportedException e) {

      e.printStackTrace();

    }

    return cloned;

  }

  class Department implements Cloneable, Serializable {

    private String name;

    public Object clone() {

      Department cloned = null;

      try {

        cloned = (Department) super.clone();

      } catch (CloneNotSupportedException e) {

        e.printStackTrace();

      }

      return cloned;

    }

  }

}

2. 浅拷贝方式

浅拷贝的方式只会复制基础类型的属性,而不会复制自定义类型的属性。也需要重写clone()方法。示例代码如下:


class Employee implements Cloneable {

  private String name;

  private int age;

  private Department department;

  public Object clone() {

    Employee cloned = null;

    try {

      cloned = (Employee) super.clone();

    } catch (CloneNotSupportedException e) {

      e.printStackTrace();

    }

    return cloned;

  }

}

需要注意的是,浅拷贝只是将引用复制,而不是对象本身。因此,在操作被复制的对象时,被复制的对象和复制后的对象将共享同一引用。如果需要确保被复制的对象和复制后的对象没有任何关系,需要使用深拷贝方式。

  
  

评论区

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