Language

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されますが、これらは絶対要件ではありません。 通常は次のようになりますが、 <blockquote>

x.clone().equals(x)

</blockquote> は trueされます。これは絶対要件ではありません。

慣例により、返されるオブジェクトは、 super.cloneを呼び出すことによって取得する必要があります。 クラスとそのすべてのスーパークラス ( Objectを除く) がこの規則に従っている場合は、 x.clone().getClass() == x.getClass()されます。

慣例により、このメソッドによって返されるオブジェクトは、このオブジェクト (複製中) から独立している必要があります。 この独立を実現するには、返す前に、 super.clone によって返されるオブジェクトの 1 つ以上のフィールドを変更することが必要な場合があります。 通常、これは、複製されるオブジェクトの内部 "ディープ構造" を構成する変更可能なオブジェクトをコピーし、これらのオブジェクトへの参照をコピーへの参照に置き換えることを意味します。 クラスにプリミティブ フィールドまたは不変オブジェクトへの参照のみが含まれている場合、通常、 super.clone によって返されるオブジェクト内のフィールドを変更する必要はありません。

Javaドキュメント。

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

適用対象