Java Object clone() 方法



描述

Java Object clone() 方法创建一个并返回此对象的副本。 “副本”的确切含义可能取决于对象的类。总体意图是,对于任何对象 x,表达式:

 x.clone() != x

将为真,并且表达式:

x.clone().getClass() == x.getClass()

将为真,但这些并非绝对要求。虽然通常情况下:

 x.clone().equals(x)

为真,但这并非绝对要求。

声明

以下是java.lang.Object.clone() 方法的声明

protected Object clone()

参数

返回值

此方法返回此实例的克隆。

异常

CloneNotSupportedException −如果对象的类不支持 Cloneable 接口。覆盖 clone 方法的子类也可以抛出此异常以指示无法克隆实例。

获取 GregorianCalendar 对象克隆示例

以下示例显示了 java.lang.Object.clone() 方法的使用。在这个程序中,我们创建了一个 GregorianCalendar 实例,然后使用 clone() 方法,我们使用之前的对象创建了另一个对象。打印了两个对象的时间。

package com.tutorialspoint;

import java.util.GregorianCalendar;

public class ObjectDemo {

   public static void main(String[] args) {

      // create a gregorian calendar, which is an object
      GregorianCalendar cal = new GregorianCalendar();

      // clone object cal into object y
      GregorianCalendar y = (GregorianCalendar) cal.clone();

      // print both cal and y
      System.out.println(cal.getTime());
      System.out.println(y.getTime());
   }
}

输出

让我们编译并运行上述程序,这将产生以下结果:

Fri May 31 13:50:19 IST 2024
Fri May 31 13:50:19 IST 2024

获取 ArrayList 对象克隆示例

以下示例显示了 java.lang.Object.clone() 方法的使用。在这个程序中,我们创建了一个 ArrayList 实例,然后使用 clone() 方法,我们使用之前的对象创建了另一个对象。打印了两个对象。

package com.tutorialspoint;

import java.util.ArrayList;
import java.util.List;

public class ObjectDemo {

  public static void main(String[] args) {

    // create a ArrayList, which is an object
    ArrayList<String> list = new ArrayList<>();

    // add value to the list
    list.add("Tutorialspoint");

    // clone object list into object y
    List<String> y = (List) list.clone();
  
    // print both list and y
    System.out.println(list);
    System.out.println(y);
  }
}

输出

让我们编译并运行上述程序,这将产生以下结果:

[Tutorialspoint]
[Tutorialspoint]

获取 HashMap 对象克隆示例

以下示例显示了 java.lang.Object.clone() 方法的使用。在这个程序中,我们创建了一个 HashMap 实例,然后使用 clone() 方法,我们使用之前的对象创建了另一个对象。打印了两个对象。

package com.tutorialspoint;

import java.util.HashMap;

public class ObjectDemo {

   public static void main(String[] args) {

      // create a HashMap, which is an object
      HashMap<String, String> map = new HashMap<>();

      // add a value to the map
      map.put("t", "tutorialspoint");
      
      // clone object map into object y
      HashMap<String, String> y = (HashMap)map.clone();

      // print both map and y
      System.out.println(map);
      System.out.println(y);
   }
}

输出

让我们编译并运行上述程序,这将产生以下结果:

{t=tutorialspoint}
{t=tutorialspoint}
java_lang_object.htm
广告