通行证: 用户 密码
http://www.pconline.cn/
汽车网 | 游戏网 | 时尚女性
分站:北京 上海 广州 深圳 香港
广西 重庆 山东 江苏 辽宁 福建
首 页 | 今日报价 | 产业资讯 | 数码世界 | 硬件资讯 | 软件资讯 | 下 载 | 游 戏 |
论 坛 | 产 品 库 | 渠道商情 | 招聘培训 | 二    手 | 评 测 室 | 导 购 | 社 区 |
摄影
部落
手 机
数码相机
随身听
 DIY配件
笔记本
 台式机
摄像机
精品廊
-
您现在的位置: 软件资讯 > 开发特区 > 开发语言 > Java 免费新闻代码RSS新闻聚合
  详述:JAVA也能克隆! 出处:JR
[ 2005-09-09 10:33:35 ] 作者:hiswing 责任编辑:moningfeng

  在这个例子中有三个类,Sheep和Sheepflod都实现了Cloneable接口,并且覆写了Object类的clone方法,说明这两个类是具有克隆能力的。注意一点,在Sheepflod中持有一个Sheep的实例,并在Main类中对其进行克隆,结果如下:

fold2.name = 小羊圈
fold2.sheep.getName() = 小羊
=======================
fold2.name = 大羊圈
* fold2.sheep.getName() = 大羊
fold.name = 小羊圈
* fold.sheep.getName() = 大羊
======================


  请注意一下结果中带有"*"号的两条结果语句。fold2.sheep和fold.sheep的name都变为了"大羊",很奇怪是吗?在此之前,我们只对fold2.sheep的name赋过值。为什么fold.sheep的name也变为了"大羊"呢?原因很简单,因为它们是指向同一个对象的不同引用。从中可以看出,调用Object类中clone()方法时,首先在内存中划分一块同原对象相同的空间,然后将原对象的内容原样拷贝至新对象。

  我们知道,java中有基本数据类型,对于基本数据类型,这样的操作是没有问题的,但对非基本类型变量,它们保存的仅仅是对象的引用,这也是为什么clone后非基本类型变量和原对象中的变量指向同一个对象的原因。可能你已经注意到,程序中用到了String类型,即对象,为什么没有出现引用指向同一地址的情况?

  这是因为String是一个不可更改的类(immutable class),每次给它赋值时,都会产生一个新的String对象。如String str = "a"; str += "b";在这两句代码中,当执行str += "b"时,实际上是重新成生了一个值为"ab"的String对象,即重新分配了一块内存空间。以上clone方法通常被称为"影子clone"。"影子clone"给我们留下了一个问题,即多个引用指向同一个对象。如何解决该问题呢?答案为"深度clone"。把上面的例子改成深度clone很简单,只需将Sheepfold的clone()方法改为如下即可:

public Object clone() throws CloneNotSupportedException {
Sheepfold fold = (Sheepfold)super.clone();
sheep = (Sheep)fold.sheep.clone();
return fold;
}


  至此,clone就基本完成了。当然,在实际使用过程中需要注意一些问题,比如StringBuffer不可以直接clone(当然,也有解决办法)等等。

  全文完!
Flash剧场全新改版,精品Flash让你看够玩够!


[上一页] [1] [2] [3]

更多相关搜索: JAVA.. 指针.. 对象.. 引用.. 克隆..
正在加载评论,请稍候…

发给好友 我要报错 投稿给我们 加入收藏 返回顶部

本栏今日更新
相关文章
·新外观:苹果播放器iTunes新版放送!
·Google本地搜索推出,快去尝尝鲜!
·全新64位技术:江民KV2006发布
·先睹为快!Vista beta2 Preview截图
·绝密曝光:用百度窥视别人的收藏夹
·QQ群技巧:快速加人及保护群隐私
·让IE也拥有Firefox的七大最强武器
·详述:JAVA也能克隆!
·Java咖啡馆(13): 终结者
·路漫漫其修远兮 Java的发展路在何方
·打破Java定律:无需创建对象--Ioc容器革命
·Java/J2EE中文问题终极解决之道
·Struts终结者?对比组件框架技术tapestry
·揭开J2EE集群Cluster的神秘面纱
·为什么是Java EE 5
·论全世界所有程序员都会犯的错误

完美时尚娱乐:2004年腾讯QQ评测大观
精彩无限:MSN Shell4使用指南
亲手制作鲜花情人贺卡送给她
挑战伏明霞?企鹅跳水游戏,看你能得多少分?

新闻搜索
高级搜索
-
热点专题
·Macromedia Studio8专题
·挑战十大Flash智益游戏
·QQ辅助软件使用指南
·向"流氓软件"大声说不!
·惜别!毕业十大必唱歌曲
·搜索技巧:网罗天下的乐趣
·电脑艺术设计大师之路连载
·老歌歪唱Flash MV爆笑欣赏
更多...
Flash排行榜

·宇春:我心里只有你沒有他
·超级女声笔畅-《笔记》
·超女张含韵-《想唱就唱》
·密室逃脱游戏- 空房出逃
·爱情的宽容-《别人》
·搞笑动脑游戏-商店神偷
·惊险逃离游戏-逃离鬼屋
·雨夜恐怖古宅探秘游戏
·那些曾为你流下的眼泪
·紧急逃离-即将沉没的船

更多...
IT培训热门文章
· 月薪5万,微软最新面试题
· 微软召开黑客大会(图)
· 美军超级黑客特种部队揭密
· Linux下软件安装详解(图)
· 软考模拟软件(网络工程师)
· 2005年软件水平考试资料
· 世界编程大赛第1名写的程序
· 某变态公司的面试IQ题
更多...
PConline频道精选