在 Java 中,对象克隆指的是创建一个与原始对象具有相同属性的新对象。对象克隆通常分为浅克隆和深克隆两种方式。浅克隆只会复制对象本身,而深克隆会连同对象内部的所有引用对象一起复制。
浅克隆
Java 中提供了 Cloneable 接口和 clone() 方法来实现对象的浅克隆。使用浅克隆时,只需实现 Cloneable 接口并重写 clone() 方法即可。下面是一个简单的示例:
-- -------------------- ---- -------
------ ----- ------ ---------- --------- -
------- ------ -----
------- --- ----
------ ------------- ----- --- ---- -
--------- - -----
-------- - ----
-
---------
------ ------ ------- ------ -------------------------- -
------ --------------
-
------ ------ ---- ------------- ----- -
------ ------- - --- --------------- ----
--- -
------ ------- - -------- ----------------
-------------------------------------- -- -- -------
------------------------------------- -- -- --
- ----- --------------------------- -- -
--------------------
-
-
-在上面的示例中,Person 类实现了 Cloneable 接口并重写了 clone() 方法。在 main 方法中,我们创建了一个 Person 对象 person1,然后通过 clone() 方法克隆了一个新的 Person 对象 person2。
深克隆
要实现对象的深克隆,需要在对象的 clone() 方法中对所有引用对象进行递归复制。下面是一个深克隆的示例:
-- -------------------- ---- -------
------ ----- ------- -
------- ------ -------
------- ------ -----
------ -------------- ------- ------ ----- -
----------- - -------
--------- - -----
-
-- ------- --- -------
-
------ ----- ------ ---------- --------- -
------- ------ -----
------- --- ----
------- ------- --------
------ ------------- ----- --- ---- ------- -------- -
--------- - -----
-------- - ----
------------ - --------
-
---------
------ ------ ------- ------ -------------------------- -
------ ------------ - -------- --------------
-------------------- - --------- ----------------
------ -------------
-
------ ------ ---- ------------- ----- -
------- ------- - --- ------------ ---- ---- --------
------ ------- - --- --------------- --- ---------
--- -
------ ------- - -------- ----------------
-------------------------------------- -- -- -------
------------------------------------- -- -- --
----------------------------------------------------- -- -- ---- ---- ---
--------------------------------------------------- -- -- ------
- ----- --------------------------- -- -
--------------------
-
-
-- ------- --- -------
-在上面的示例中,Person 类包含一个 Address 类型的引用对象 address。在 clone() 方法中,我们首先调用 super.clone() 复制对象本身,然后再对 address 对象进行深度复制。
这就是 Java 中对象克隆的基本概念和实现方式。通过对象克隆,我们可以在不影响原始对象的情况下创建新的对象,从而方便地进行对象复制和传递。