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