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 実装していない場合は 。

注釈

このオブジェクトのコピーを作成して返します。 "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()

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

適用対象