网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  利用导入改变行为     
  文章作者:未知  文章来源:水木森林  
  查看:72次  录入:管理员--2007-11-17  
 
  java已取消的一种特性是c的“条件编译”,它允许我们改变参数,获得不同的行为,同时不改变其他任何代码。java之所以抛弃了这一特性,可能是由于该特性经常在c里用于解决跨平台问题:代码的不同部分根据具体的平台进行编译,否则不能在特定的平台上运行。由于java的设计思想是成为一种自动跨平台的语言,所以这种特性是没有必要的。
  然而,条件编译还有另一些非常有价值的用途。一种很常见的用途就是调试代码。调试特性可在开发过程中使用,但在发行的产品中却无此功能。alen holub(www.holub.com)提出了利用包(package)来模仿条件编译的概念。根据这一概念,它创建了c“断定机制”一个非常有用的java版本。之所以叫作“断定机制”,是由于我们可以说“它应该为真”或者“它应该为假”。如果语句不同意你的断定,就可以发现相关的情况。这种工具在调试过程中是特别有用的。
  可用下面这个类进行程序调试:
  //: assert.java
  // assertion tool for debugging
  package com.bruceeckel.tools.debug;
  public class assert {
   private static void perr(string msg) {
    system.err.println(msg);
   }
   public final static void is_true(boolean exp) {
    if(!exp) perr("assertion failed");
   }
   public final static void is_false(boolean exp){
    if(exp) perr("assertion failed");
   }
   public final static void
   is_true(boolean exp, string msg) {
    if(!exp) perr("assertion failed: " + msg);
   }
   public final static void
   is_false(boolean exp, string msg) {
    if(exp) perr("assertion failed: " + msg);
   }
  } ///:~
  这个类只是简单地封装了布尔测试。如果失败,就显示出出错消息。在第9章,大家还会学习一个更高级的错误控制工具,名为“违例控制”。但在目前这种情况下,perr()方法已经可以很好地工作。
  如果想使用这个类,可在自己的程序中加入下面这一行:
  import com.bruceeckel.tools.debug.*;
  如欲清除断定机制,以便自己能发行最终的代码,我们创建了第二个assert类,但却是在一个不同的包里:
  //: assert.java
  // turning off the assertion output
  // so you can ship the program.
  package com.bruceeckel.tools;
  public class assert {
   public final static void is_true(boolean exp){}
   public final static void is_false(boolean exp){}
   public final static void
   is_true(boolean exp, string msg) {}
   public final static void
   is_false(boolean exp, string msg) {}
  } ///:~
  现在,假如将前一个import语句变成下面这个样子:
  import com.bruceeckel.tools.*;
  程序便不再显示出断言。下面是个例子:
  //: testassert.java
  // demonstrating the assertion tool
  package c05;
  // comment the following, and uncomment the
  // subsequent line to change assertion behavior:
  import com.bruceeckel.tools.debug.*;
  // import com.bruceeckel.tools.*;
  public class testassert {
   public static void main(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包的停用    下一篇: 创建独一无二的包名
  相关文档
用filefilter搜索文件 11-17
7个软件开发原则 11-17
java企业应用系统框架的比较与选择 11-17
带你揭开java clone技术的神秘面纱 11-17
基础篇:数组 11-17
邂逅stringindexoutofboundsexception 11-17
开源技术:在eclipse中构建备忘单 11-17
enterprisejavabean的结构优点的探讨 11-17
用java实现语音引擎 11-17
关掉那可恶的dos窗口 11-17
j2ee、corba、dna三种主流中间件平台比较(3) 11-17
java.applet.applet的网络功能(& 11-17
java:配置文件读取器 11-17
java+xml将数据导入sql server中 11-16
java究竟是什么? 11-17
浅谈mda技术未来发展方向 11-17
经验谈:我学习使用java的一点体会 11-16
jvm学习笔记之一 11-17
有效和正确定义hashcode()和equals() 11-16
用java操作microsoft excel完美解决方案 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息