21xrx.com
2025-04-16 11:15:50 Wednesday
文章检索 我的文章 写文章
Java中实现对象复制的方法及案例
2023-06-14 19:41:06 深夜i     10     0
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;
  }
}

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

  
  

评论区

    相似文章
请求出错了