Object.Clone 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
建立並傳回這個 物件的複本。
[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
,而且陣列類型的方法傳回型 clone
T[]
別是 T[]
T 是任何參考或基本型別的位置。 否則,這個方法會建立這個 物件 類別的新實例,並使用這個物件的對應欄位內容初始化其所有欄位,就像透過指派一樣;不會複製欄位的內容。 因此,這個方法會執行這個物件的「淺層複製」,而不是「深層複製」作業。
類別 Object
本身不會實作 介面 Cloneable
,因此在類別 Object
將會導致在執行時間擲回例外狀況的物件上呼叫 clone
方法。
的 java.lang.Object.clone()
JAVA 檔。
此頁面的部分是根據所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。