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
的 对象的一个或多个字段。 通常,这意味着复制包含所克隆对象的内部“深层结构”的任何可变对象,并将对这些对象的引用替换为对副本的引用。 如果类仅包含基元字段或对不可变对象的引用,则通常不需要修改 返回 super.clone
的对象中的字段。
类Object
的 方法clone
执行特定的克隆操作。 首先,如果此 对象的 类未实现 接口 Cloneable
,则会 CloneNotSupportedException
引发 。 请注意,所有数组都被视为实现 接口Cloneable
,并且数组类型的T[]
方法的clone
返回类型是T[]
其中 T 是任何引用或基元类型。 否则,此方法创建此 对象的 类的新实例,并用此对象的相应字段的内容初始化其所有字段,就像通过赋值一样;字段的内容本身不会克隆。 因此,此方法执行此对象的“浅表复制”,而不是“深层复制”操作。
类Object
本身不实现 接口 Cloneable
,因此对类为 Object
的对象调用 clone
方法将导致在运行时引发异常。
的 java.lang.Object.clone()
Java 文档。
此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。