API学习java.lang.clone

package com.wonders.week01.object;

/**
 * JDK1.7
 * clone
 * (1)java.lang.Object
 * (2)方法的访问权限修饰符是protected
 * (3)方法的返回值类型是Object
 * (4)返回值是当前实例的一个克隆
 * (5)如果对象所属的类不支持Cloneable 接口,子类重写clone方法也会抛出异常CloneNotSupportedException,指出实例不可以被克隆。
 * (6)创建并返回一个当前对象的复制。"复制"的准确含义是取决于当前对象所在的类。一般来说,对于任何的对象x,都有表达式
 * (a)x.clone()!=x会返回true,
 * (b)x.clone().getClass()==x.getClass();也会返回true。
 * (c)x.clone.equals(x)也会返回true;
 * 其中对于上面的(b)(c)中如果x.clone() == null的时候继续进行getClass()或者equals操作会抛出空指针异常。
 * (7)按照惯例,通过调用super.clone可以获取到返回的对象。如果一个类及其子类都遵循这个惯例(除了Object这个类), 例子如右:x.clone().getClass() == x.getClass()
 * (8)通常,该方法返回的对象应该独立于此对象(被克隆的对象)。为了达到这种独立,再返回它之前通过调用super.clone来修改一个或者多个该对象的域是很有必要的。
 * 有代表性的,这意味着要复制包含被克隆的对象的内部“深层结构”的任何可变对象,并将对这些对象的引用替换为对副本的引用。如果一个类只包含private的成员变量或者一些不可变的对象,
 * 通常情况下,通过super.clone返回的对象此时是没有成员变量的,需要被修改。
 * (9)克隆用于类对象的方法执行特定的克隆操作.
 * (10)如果当前对象所在的类没有实现Cloneable接口,就会抛出异常 CloneNotSupportedException。
 * (11)所有的数组都被认为是实现了Cloneable 接口,clone方法的返回值类型是一个数组类型T[],其中T可以是引用类型也可以是基本数据类型。
 * 否则,这个对象所在类的就会创建一个新的实例,并且初始化所有字段,其中包含该对象相应字段的内容。其中字段的内容不是自己克隆的,因此这个方法是该对象的浅克隆方法,而不是深克隆操作。
 * (12)Object这个类自身是没有实现Cloneable接口的,因此,将克隆方法调用对象上的对象,将导致在运行时抛出异常.
 * @author liyongyong
 *
 */
public class CloneTest {

}

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值