当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:17:00  来源:本站整理

java clone学习总结[Java编程]

赞助商链接



  本文“java clone学习总结[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

由于Java中的全部东西都是句柄,并且由于每个对象都是在内存堆中成立的——只有不再需求的时刻,才会当作垃圾汇集掉,所以对象的操作方法发生了改变,分外是在传送和返回对象的时刻.举个例子来说,在C和C++中,假如想在一个办法里初始化一些存储空间,大概需求恳求用户将那片存储区域的地址传送进入办法.不然就必须考虑由谁负责排除那片区域.因此,这些办法的接口和对它们的理解就显得要复杂一些.但在Java中,根本没必要关心由谁负责排除,也没必要关心在需求一个对象的时刻它能否仍旧存在.因为系统会为我们照料一切.我们的程序可在需求的时刻成立一个对象.并且更进一步地,根本没必要耽忧那个对象的传输机制的细节:只需简单地传送句柄便可.有些时刻,这种简化非常有代价,但另一些时刻却显得有些多余.
可从两个方面熟习这一机制的缺陷:
(1) 必定要为额外的内存管理付出效率上的丧失(固然丧失不大),并且关于运行所需的时间,老是存在一丝不肯定的因素(因为在内存不够时,垃圾汇集器大概会被强迫采纳行动).对大大都利用来说,长处显得比缺陷重要,并且部份对时间要求非常尖刻的段落可以用native办法写成(拜见附录A).
(2) 别名处理:有时会不慎得到指向同一个对象的两个句柄.只有在这两个句柄都假定指向一个“明确”的对象时,才有大概产生问题.对这个问题,必须加以充足的器重.并且应当尽大概地“克隆”一个对象,以避免另一个句柄被不但愿的窜改影响.除此以外,可考虑成立“不可变”对象,使它的操作能返回同种范例或差别种范例的一个新对象,从而提高程序的履行效率.但千万不要改变原始对象,使对那个对象别名的其他任何方面都感受不出改变.

有些人认为Java的克隆是一个拙笨的家伙,所以他们实现了自己的克隆筹划(注释⑤),永久根绝调用Object.clone()办法,从而消除了实现Cloneable和捕捉CloneNotSupportException违例的需求.这一做法是公道的,并且由于clone()在Java尺度库中很少得以支持,所以这明显也是一种“安全”的办法.只要不调用Object.clone(),就没必要实现Cloneable大概捕捉违例,所以那看起来也是可以承受的.

⑤:Doug Lea分外器重这个问题,并把这个办法举荐给了我,他说只需为每个类都成立一个名为duplicate()的函数便可.

Java中一个风趣的关键字是byvalue(按值),它属于那些“保存但未实现”的关键字之一.在理解了别名和克隆问题今后,大家可以想象byvalue终究有一天会在Java顶用于实现一种自动化的本地副本.这样做可以办理更多复杂的克隆问题,并使这种情形下的编写的代码变得越发简单和结实.


  以上是“java clone学习总结[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .