|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
自己的整个学习思路完全被老师的讲课思路所牵制,这样几节课听下来,恐怕自己的见解都应该是书里的知识点了,根本谈不上自身发现问题,分析问题,和解决问题能力的切实提高。
Java已作废的一种特征是C的“前提编译”,它同意我们改动参数,取得分歧的举动,同时不改动其他任何代码。Java之以是丢弃了这一特征,多是因为该特征常常在C里用于办理跨平台成绩:代码的分歧部分依据详细的平台举行编译,不然不克不及在特定的平台上运转。因为Java的计划头脑是成为一种主动跨平台的言语,以是这类特征是没有需要的。
但是,前提编译另有另外一些十分有代价的用处。一种很罕见的用处就是调试代码。调试特征可在开辟过程当中利用,但在刊行的产物中却无此功效。AlenHolub(www.holub.com)提出了使用包(package)来仿照前提编译的观点。依据这一观点,它创立了C“判定机制”一个十分有效的Java版本。之以是叫作“判定机制”,是因为我们能够说“它应当为真”大概“它应当为假”。假如语句分歧意你的判定,就能够发明相干的情形。这类工具在调试过程当中是出格有效的。
可用上面这个类举行程序调试:- //:Assert.java
- //Assertiontoolfordebugging
- packagecom.bruceeckel.tools.debug;
- publicclassAssert{
- privatestaticvoidperr(Stringmsg){
- System.err.println(msg);
- }
- publicfinalstaticvoidis_true(booleanexp){
- if(!exp)perr("Assertionfailed");
- }
- publicfinalstaticvoidis_false(booleanexp){
- if(exp)perr("Assertionfailed");
- }
- publicfinalstaticvoid
- is_true(booleanexp,Stringmsg){
- if(!exp)perr("Assertionfailed:"+msg);
- }
- publicfinalstaticvoid
- is_false(booleanexp,Stringmsg){
- if(exp)perr("Assertionfailed:"+msg);
- }
- }///:~
复制代码
这个类只是复杂地封装了布尔测试。假如失利,就显现出堕落动静。在第9章,人人还会进修一个更初级的毛病把持工具,名为“背例把持”。但在今朝这类情形下,perr()办法已能够很好地事情。
假如想利用这个类,可在本人的程序中到场上面这一行:
importcom.bruceeckel.tools.debug.*;
如欲扫除判定机制,以便本人能刊行终极的代码,我们创立了第二个Assert类,但倒是在一个分歧的包里:
- //:Assert.java
- //Turningofftheassertionoutput
- //soyoucanshiptheprogram.
- packagecom.bruceeckel.tools;
- publicclassAssert{
- publicfinalstaticvoidis_true(booleanexp){}
- publicfinalstaticvoidis_false(booleanexp){}
- publicfinalstaticvoid
- is_true(booleanexp,Stringmsg){}
- publicfinalstaticvoid
- is_false(booleanexp,Stringmsg){}
- }///:~
复制代码
如今,假设将前一个import语句酿成上面这个模样:
importcom.bruceeckel.tools.*;
程序便不再显现出断言。上面是个例子:- //:TestAssert.java
- //Demonstratingtheassertiontool
- packagec05;
- //Commentthefollowing,anduncommentthe
- //subsequentlinetochangeassertionbehavior:
- importcom.bruceeckel.tools.debug.*;
- //importcom.bruceeckel.tools.*;
- publicclassTestAssert{
- publicstaticvoidmain(String[]args){
- Assert.is_true((2+2)==5);
- Assert.is_false((1+1)==2);
- Assert.is_true((2+2)==5,"2+2==5");
- Assert.is_false((1+1)==2,"1+1!=2");
- }
- }///:~
复制代码
经由过程改动导进的package,我们可将本人的代码从调试版本酿成终极的刊行版本。这类手艺可使用于任何品种的前提代码。
你希望java的IDE整合。这个是没有必要的,重要的是你理解java有多深以及怎么组织你的代码,即使没有IDE,代码照样能够编译运行的。 |
|