Object.Clone 方法

定義

建立並傳回這個 物件的複本。

[Android.Runtime.Register("clone", "()Ljava/lang/Object;", "GetCloneHandler")]
protected virtual Java.Lang.Object Clone ();
[<Android.Runtime.Register("clone", "()Ljava/lang/Object;", "GetCloneHandler")>]
abstract member Clone : unit -> Java.Lang.Object
override this.Clone : unit -> Java.Lang.Object

傳回

這個實例的複製品。

屬性

例外狀況

如果這個物件的類別未實作 介面,則為 Cloneable

備註

建立並傳回這個 物件的複本。 「複製」的精確意義可能取決於 物件的類別。 一般意圖是,針對任何物件 x ,運算式: < blockquote>

x.clone() != x

</blockquote > 會是 true,而且運算式為 blockquote: < blockquote>

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

</blockquote > 會是 true ,但這些不是絕對需求。 雖然這通常是: < blockquote>

x.clone().equals(x)

</blockquote > 將是 true ,這不是絕對需求。

依照慣例,應該藉由呼叫 super.clone 來取得傳回的物件。 如果類別及其所有超級類別都 (,但 Object) 遵守此慣例,則為 x.clone().getClass() == x.getClass()

依照慣例,這個方法所傳回的物件應該與複製) (這個物件無關。 若要達到此獨立性,可能需要先修改 所 super.clone 傳回物件的一或多個欄位,再傳回它。 一般而言,這表示複製任何組成所複製物件內部「深層結構」的可變動物件,並將這些物件的參考取代為複本的參考。 如果類別只包含不可變物件的基本欄位或參考,則通常不需要修改 所 super.clone 傳回之物件中的任何欄位。

類別的 Object 方法 clone 會執行特定的複製作業。 首先,如果這個 物件的 類別未實作 介面 Cloneable ,則會 CloneNotSupportedException 擲回 。 請注意,所有陣列都會被視為實作 介面 Cloneable ,而且陣列類型的方法傳回型 cloneT[] 別是 T[] T 是任何參考或基本型別的位置。 否則,這個方法會建立這個 物件 類別的新實例,並使用這個物件的對應欄位內容初始化其所有欄位,就像透過指派一樣;不會複製欄位的內容。 因此,這個方法會執行這個物件的「淺層複製」,而不是「深層複製」作業。

類別 Object 本身不會實作 介面 Cloneable ,因此在類別 Object 將會導致在執行時間擲回例外狀況的物件上呼叫 clone 方法。

java.lang.Object.clone() JAVA 檔。

此頁面的部分是根據所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。

適用於