文谷首页 | 业界传真 | 网络技术 | 服务器 | 数据库 | 存储技术 | 系统安全 | 无线技术 | Cisco | .Net | Windows | Linux | Unix | Java
电子商务 | 网站工程 | 网页设计 | 平面设计 | 多媒体 | 编程语言 | Oracle | MSSQL | Photoshop | ASP | PHP | 实用技巧 | 进程查询 | 文谷论坛
Java频道
 资讯动态   考试认证   新手入门   核心技术   高级技术   J2EE   J2ME   XML   开源技术   其他技术
您现在的位置: IT文谷 >> 开发平台 >> Java >> 新手入门 >> 基础入门 >> 文章正文
深入浅出Java clone技术(2)深入浅出Java clone技术(2)2006-10-28 9:32:22深入浅出Java clone技术(2)2006-10-28 9:32:22深入浅出Java clone技术(2)
深入浅出Java clone技术(2)
深入浅出Java clone技术(2)深入浅出Java clone技术(2)2006-10-28 9:32:22深入浅出Java clone技术(2)2006-10-28 9:32:22深入浅出Java clone技术(2)
深入浅出Java clone技术(2)深入浅出Java clone技术(2)2006-10-28 9:32:22深入浅出Java clone技术(2)2006-10-28 9:32:22深入浅出Java clone技术(2)

 

在上一篇中,介绍了java里clone的基本知识。本篇将着重描述如何实现clone。

 

l clone的实现

1.实现Cloneable接口

通过上一篇的介绍,我们知道,一个类若要具备clone功能,就必须实现Cloneable接口。做到这一步,clone功能已经基本实现了。Clone功能对我们来说,最主要的还是要能够使用它。那么我们如何才能使用clone功能呢?答案是覆盖Object#clone()方法。

2. 覆盖Object#clone()方法

为什么需要覆盖Object#clone()方法?这里得再次从jdk源码说起。JDK中Object# clone()方法的原型是:

protected native Object clone() throws CloneNotSupportedException;

是否注意到,这里clone()方法修饰符是protected,而不是public。这种访问的不可见性使得我们对Object#clone()方法不可见。相信读者已明白为什么要覆盖Object#clone()方法。而且,覆盖的方法的修饰符必须是public,如果还保留为protected,覆盖将变得没有实际意义。下面举一个具有clone功能的简单的例子:

/*

     * 具有clone功能的类的例子

*/

public class CloneableObjExample implements Cloneable {

//……部分代码已省略……

      private String name = null;

private int score = 0;

 

   /**

* NOTE: 将protected 修饰符 更改为 public

* @see java.lang.Object#clone()

 */

 public/*protected*/ Object clone() throws CloneNotSupportedException {

    // call父类的clone方法

    Object result = super.clone();

     //TODO: 定制clone数据

    return result;

}

}

3.定制clone

至此,clone已经真相大白。Clone的对象我们可以对其进行定制。还就上面的例子来说。下面的方法对功能做了一定的增强:

public/*protected*/ Object clone() throws CloneNotSupportedException {

  // call父类的clone方法

  CloneableObjExample result = (CloneableObjExample)super.clone();

  //TODO: 定制clone数据

  //虽然”clone”了,但还可以做点调整

    result.name = “New Name”;

    result.score = 90;

    return result;

}

 

本篇介绍了如何实现clone。接下来的篇幅将就纵深clone等clone的高级特性进行分析。

深入浅出Java clone技术(2)深入浅出Java clone技术(2)2006-10-28 9:32:22深入浅出Java clone技术(2)2006-10-28 9:32:22深入浅出Java clone技术(2)
  • 上一篇文章:

  • 下一篇文章:
  • 进入论坛讨论

    相关文章
    我的Thinking in Java学习笔记
    使用JBoss和Eclipse创建J2EE应用
    SpringFramework(9)
    NoTitle385
    向Web Service进军--Axis+Tomcat模拟一个银行存取款
    JAVA中的指针,引用及对象的clone
    JAVA中用动态代理类实现记忆功能(二)
    JAVA中用动态代理类实现记忆功能(一)
    DB Test
    基金系统的初步研究(1)
    SpringFramework(8)
    Eclipse 下的Java2 开发环境
    热门文章最新推荐

    版权与免责声明:
    ① 本网转载其他媒体稿件是为传播更多的信息,此类稿件不代表本网观点,版权归原作者所有,本网不承担此类稿件侵权行为的连带责任。
    ② 本站原创文章,转载时请注明出自文谷及作者姓名
    ③在本网BBS上发表言论者,文责自负。
    ④如您因版权等问题需要与本网联络,请在30日内联系 。
    深入浅出Java clone技术(2)深入浅出Java clone技术(2)2006-10-28 9:32:22深入浅出Java clone技术(2)2006-10-28 9:32:22深入浅出Java clone技术(2)
    深入浅出Java clone技术(2)深入浅出Java clone技术(2)2006-10-28 9:32:22深入浅出Java clone技术(2)2006-10-28 9:32:22深入浅出Java clone技术(2)

    全站热点
    最新推荐
    关于文谷 | 联系文谷 | 免责声明 | 文谷论坛
    Tel: 0577-65690019      E-mail: ichenjian@gmail.com    MSN:ichenjian@hotmail.com    QQ:2911194
    Copyright © 2004-2008 wengu.com 文谷 All Rights Reserved
    浙ICP备05000327号