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されますが、これらは絶対要件ではありません。 通常は次のようになりますが、 <blockquote>
x.clone().equals(x)
</blockquote> は trueされます。これは絶対要件ではありません。
慣例により、返されるオブジェクトは、 super.cloneを呼び出すことによって取得する必要があります。 クラスとそのすべてのスーパークラス ( Objectを除く) がこの規則に従っている場合は、 x.clone().getClass() == x.getClass()されます。
慣例により、このメソッドによって返されるオブジェクトは、このオブジェクト (複製中) から独立している必要があります。 この独立を実現するには、返す前に、 super.clone によって返されるオブジェクトの 1 つ以上のフィールドを変更することが必要な場合があります。 通常、これは、複製されるオブジェクトの内部 "ディープ構造" を構成する変更可能なオブジェクトをコピーし、これらのオブジェクトへの参照をコピーへの参照に置き換えることを意味します。 クラスにプリミティブ フィールドまたは不変オブジェクトへの参照のみが含まれている場合、通常、 super.clone によって返されるオブジェクト内のフィールドを変更する必要はありません。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。