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
実装していない場合は 。
注釈
このオブジェクトのコピーを作成して返します。 "copy" の正確な意味は、オブジェクトのクラスによって異なります。 一般的な意図は、任意のオブジェクト x
に対して、式: <blockquote>
x.clone() != x
</blockquote> は true になり、式: <blockquote>
x.clone().getClass() == x.getClass()
</blockquote> は になります true
が、これらは絶対要件ではありません。 通常はブロッククォートです <。>
x.clone().equals(x)
</blockquote> は になります true
。これは絶対要件ではありません。
慣例により、返されるオブジェクトは を呼び出 super.clone
して取得する必要があります。 クラスとそのすべてのスーパークラス (を除く Object
) がこの規則に従っている場合は、 のようになります x.clone().getClass() == x.getClass()
。
規則により、このメソッドによって返されるオブジェクトは、このオブジェクト (複製中) とは独立している必要があります。 この独立を実現するには、返される オブジェクトの 1 つ以上のフィールドを変更してから返 super.clone
す必要がある場合があります。 通常、これは、複製されるオブジェクトの内部の "深い構造" を構成する変更可能なオブジェクトをコピーし、これらのオブジェクトへの参照をコピーへの参照に置き換えることを意味します。 クラスにプリミティブ フィールドまたは不変オブジェクトへの参照のみが含まれている場合、通常は、 によって super.clone
返されるオブジェクト内のフィールドを変更する必要がない場合があります。
クラスObject
の メソッドclone
は、特定の複製操作を実行します。 最初に、このオブジェクトの クラスが インターフェイス Cloneable
を実装していない場合は、 CloneNotSupportedException
がスローされます。 すべての配列は インターフェイスCloneable
を実装すると見なされ、配列型のメソッドの戻り値の型は T がT[]
任意のclone
参照型またはプリミティブ型T[]
であることに注意してください。 それ以外の場合、このメソッドは、このオブジェクトのクラスの新しいインスタンスを作成し、代入の場合と同様に、このオブジェクトの対応するフィールドの内容を使用してすべてのフィールドを初期化します。フィールドの内容自体は複製されません。 したがって、このメソッドは、"ディープ コピー" 操作ではなく、このオブジェクトの "シャロー コピー" を実行します。
クラス Object
自体は インターフェイス Cloneable
を実装しないため、クラスが である オブジェクトで メソッドを呼び出 clone
すと、実行時に例外が Object
スローされます。
の Java ドキュメント java.lang.Object.clone()
。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。