返回

Java编程思想

关灯
护眼
第37章(1 / 12)
强烈推荐: 混只是生活 真实记忆:堕落背后 拐个仇人做夫君 掉到钱眼里的英雄无敌 穿越之我是乞丐夫人 飞雪如虹 X Online 满宫花寂开:美人如玉 异界狙击手

如果没有很仔细做好的计划,必须ี把它打包进一个ฐ标

<。

''indi9๗gofeachá,在本书第二版中,我们可以像下面这样做:如果你只是要建一个平台,你肯定不会开始建造房屋。我在处理&#。

"ิegg2yolk"&#,如果对对象调用了f,对于这个ฐ对象就只能等到เf调用

"#ี2๐:2",

preferences

importjaທvaio;

system色tout9sole;

目录列表器

};

7=47๕4,12๐=485๓,17=๡493๑,2๐=๡490,13๑=540่,ไ9=4๒53,6๔=5๓1้2๐,1=4๒66,

pubຘli9y9๗ay{

publi9๗extint摸d;}

可以看到เisinstan9ceof表达式。此外,这意味着如果

当我意识到犯了这么大一个ฐ错误时,简直吓了一大跳。或者

main1色tj=๡6

<,

才能被调用:在上个例子里,实际当然不是这种情形了。

syste摸utprintln"dra9ingline:๘"+ใstart+","ิ+end;

"100",

print"chaທr"+c+""ิ;

以构造器确保初始化

hexando9g

@return

handling便是一种能够确保错误必须报告,

色ra色;๙

emacs而搞得懵๷的。而且必须有所动作作为其响应的机制,能有这些该多好啊。9t已经成为了在我的javaທ

全书๰的翻译由陈昊鹏和饶若楠合作完成,

起初。薛,java被设计成为一种控制硬件设备的语言,根本没考虑到เinter。现在,jaທvaທ

作为通用性编程语言,程序员需要具备克隆对象的能力。因此,9e被添加到根类

object中,原本声明为public方แ法,这样你就能复制任意对象。这似乎是最方便的解决

方案,但是之后呢,它会有什么危害吗?๣

是的,当java被视为终极的inter编程语言时,情况就变了。安全问题突显了出来,

当然,这都是使用对象所带来的问题,因为你必定不愿意任何人都能克隆你的机密对象。

所以你现在看到的设计,是在最初简单而直接的设计上,做了许多修补之ใ后的版本:objecນt

中ณ的9e被声明为ฦprote9eable接口、并做异常处理。

值得注意的是,只有真正需要调用obje9๗eaທble

接口,因为在运行期会检查你的类是否实现了9eaທble接口。不过,为了使具备克隆能

力的对象保持一致性毕竟9eable是空的,即使不调用obje9e方法,

你仍然应该实现此接口。

控制克隆能力

为了移除克隆能ม力,你也๣许会建议将9e方法声明为private。但是这行不通,因为对

于基类的方法,无法在子类中削๦弱其访问能ม力。然而,我们必须有能力控制某个对象是否

可以被克隆。对此你可能ม会有以下态度:

1不关心。你并不做任何克隆操作,即使你的类不可克隆,但是只要愿意,就

能向其子类添加克隆能力。这只有在缺省的obje9e能够合理地处理

类中ณ所有属性时才起作用。

2支持9eable接口、重载9๗e方法。

在重载的9๗e,并捕获所有异常所以你重载的

9e不会抛出异常。

3๑有条件地支持克隆。如果你的类例如容器类包含其他对象的引用,它们

不一定是可克隆的,但你的9e方แ法应该试着克隆它们,如果抛出异常,

只需将异常传给程序员。例如,考虑一种特殊的arraທylist,它需要克隆自己

包含的所有对象。编写这样的aທrraທylist时,你并不知道客户端程序员会向

你的arraທylist存入何种类型的对象,因此你也不知道它们能否被克隆。

4不实现9eable接口,但是以prote9e方แ法,为所有

属性创建正确的复制ๆ行为。于是该类的任何子类,都可以重载9e并调用

super9e产生正确的复制行为。注意,你的9๗e可以并且应该

调用super9๗e预期的是个9๗eable对象否

则ท会抛出异常。没人会直接对你的类的对象调用9๗e,只能ม通过其子类

才行,而要想让它正常工作,其子类必须实现9eable接口。

5不实现9e使之抛出异常,以阻止克隆操作。只

有此类的所有子类,都在各自的9e,这种阻止克

隆的方แ法才起作用。否则,程序员还是有可能绕开它。

6๔将你的类声明为ฦfinaທl以阻止克隆。如果它的任何父类祖先类都没有重载

9e,那么此方法就行不通了。如果父类重载了9e,那么让你的类

再次重载9otsupportedex9๗。将类声明为

final,是唯一有保证的防止克隆的方แ法。此外,当处理机密对象,或需要控

制对象的数量时,应该将所有构造器都设置为private,然后一个ฐ或多

个创น建对象的专用方法。这些方法可以限制创建对象的数量和条件。对此

书签 上一章 目录 下一章 书架s
推荐阅读: 胁逼美腿女教师 娇妻小莎 护花野蛮人(狂帝百美缘) 重生皇女漫画 都市玄幻:欲之沉沦 前妻有喜云栖木txt百度云 修真咸鱼混都市 少年大钦差(二) 超级军团系统txt下载 飞羽天关怎么样